首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Selenium定位Facebook的生日元素?

如何用Selenium定位Facebook的生日元素?
EN

Stack Overflow用户
提问于 2019-10-08 04:22:52
回答 2查看 553关注 0票数 0

我正在尝试从Facebook个人资料的“约页”中提取硒(java & chrome)的生日。我怎么发动汽车呢?

在Facebook的“关于”选项卡上,有一个包含个人生日的元素(如果披露的话)。我真的很想把它当作一根线。这里的例子:https://www.facebook.com/zuck/about?lst=100002006436635%3A4%3A1570508289

我试过driver.findElementByXPath和driver.findElementByClassName以及PartialLinkText。我以前在不同的地方做过这件事,也许我只是做错了什么。

我尝试过的XPath代码如下:

代码语言:javascript
复制
.findElementByXPath("//*[@class='_4bl9 _2pis _2dbl']");

.findElementByXPath("//*[contains(text(), 'birthdate')]");

请指导我如何定位这个元素或提取生日。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-08 06:40:25

试试这个xpath,让我知道

代码语言:javascript
复制
//span[text()='Birthday']//../following-sibling::div

示例代码:

代码语言:javascript
复制
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日

票数 0
EN

Stack Overflow用户

发布于 2019-10-08 06:43:18

您能否尝试使用以下xpath:

代码语言:javascript
复制
.//*[text()='Birthday']/parent::div/following-sibling::div

下面是我从您共享的链接复制的html。

代码语言:javascript
复制
<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将定位包含道布的div

然后可以通过getText()getAttribute("innerText")方法获得字符串值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58280159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档