如何使用Selenium找到Facebook的生日元素?



我正在尝试从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")方法获取字符串值

相关内容

  • 没有找到相关文章

最新更新