我正在尝试从Facebook个人资料的“关于页面”中提取Selenium(java和chrome)的生日。我该怎么办?
在Facebook的“关于”选项卡上,有一个元素包含该人的生日(如果已披露)。我真的很想把它作为字符串。 这里的例子: https://www.facebook.com/zuck/about?lst=100002006436635%3A4%3A1570508289
我已经尝试过driver.findElementByXPath和driver.findElementByClassName以及PartialLinkText。我以前曾在另一个地方做过此事,并且奏效了,也许我在这里做错了事。
我尝试过的XPath代码在这里:
.findElementByXPath("//*[@class='_4bl9 _2pis _2dbl']");
.findElementByXPath("//*[contains(text(), 'birthdate')]");
请指导我如何定位此元素或提取生日
答案 0 :(得分:0)
尝试这个xpath并告诉我
//span[text()='Birthday']//../following-sibling::div
示例代码:
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class Test {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "./libs/chromedriver 4");
WebDriver driver=new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://www.facebook.com/zuck/about?lst=100002006436635%3A4%3A1570508289");
driver.findElement(By.name("email")).sendKeys("<username>");
driver.findElement(By.name("pass")).sendKeys("<password>");
driver.findElement(By.name("pass")).submit();
driver.findElement(By.name("pass")).sendKeys("<password>");
driver.findElement(By.name("pass")).submit();
driver.get("https://www.facebook.com/zuck/about?lst=100002006436635%3A4%3A1570508289");
System.out.println(driver.findElement(By.xpath("//span[text()='Birthday']//../following-sibling::div")).getText());
}
}
1984年5月14日
答案 1 :(得分:0)
您可以尝试使用以下xpath:
.//*[text()='Birthday']/parent::div/following-sibling::div
下面是我从您共享的链接中复制的html
<span class="_c24 _2ieq">
<div>
<span class="accessible_elem">Birthday</span>
</div>
<div>May 14, 1984</div>
</span>
说明:
.//*[text()='Birthday']
将找到生日跨度
/parent::div
将找到父div
following-sibling::div
将找到包含DOB的div
然后您可以通过getText()
或getAttribute("innerText")
方法获取字符串值