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

时间:2019-10-08 04:22:52

标签: java selenium selenium-chromedriver

我正在尝试从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')]");

请指导我如何定位此元素或提取生日

2 个答案:

答案 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")方法获取字符串值