我正在尝试从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')]");
请指导我如何定位此元素或提取出生日期
试试这个 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());
}
}
输出
14五月 1984
你能试试下面的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")
方法获取字符串值