Selenium webdriver 如何在网站上创建自己的xpath-Selenium

Selenium webdriver 如何在网站上创建自己的xpath-Selenium,selenium-webdriver,Selenium Webdriver,我正在编写一个小应用程序,以转到twitter.com,选择登录按钮,然后输入用户名和密码 我已经能够检查登录按钮并从chrome复制XPath,但是根据给出的信息创建自己的XPath失败。复制时使用的XPath确实有效,但在我的代码中看起来并不整洁,因此我热衷于编写自己的XPath WebDriver driver = new ChromeDriver(); driver.get("http://www.twitter.com"); driver.findElement(B

我正在编写一个小应用程序,以转到twitter.com,选择登录按钮,然后输入用户名和密码

我已经能够检查登录按钮并从chrome复制XPath,但是根据给出的信息创建自己的XPath失败。复制时使用的XPath确实有效,但在我的代码中看起来并不整洁,因此我热衷于编写自己的XPath

WebDriver driver = new ChromeDriver();
driver.get("http://www.twitter.com");
driver.findElement(By.xpath("//*[@id=\"react-root\"]/div/div/div/main/div/div/div[1]/div[1]/div/div[3]/a[2]/div")).click();
下面是我检查登录按钮时给出的内容

<div dir="auto" class="css-901oao r-1awozwy r-13gxpu9 r-6koalj r-18u37iz r-16y2uox r-1qd0xha r-a023e6 r-b88u0q r-1777fci r-ad9z0x r-dnmrzs r-bcqeeo r-q4m81j r-qvutc0">
    <span class="css-901oao css-16my406 css-bfa6kz r-poiln3 r-bcqeeo r-qvutc0">
        <span class="css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0">Log in</span>
    </span>
</div>

登录

我不确定您在寻找什么答案,因此这里有几种可能性:

  • 把密码给我
    A:试试
    //A[@data testid='loginButton']

  • 如何读取页面的源代码,以便创建正确的XPath?
    A:那是经验使然。首先,打开devtools并用鼠标悬停以查看页面上突出显示的元素。仔细阅读属性

  • 我在哪里学习正确的XPath?
    在网上搜索一些教程。就我个人而言,我从一个开始,然后从那里建立起来


  • 您可以根据登录按钮的父级唯一属性来识别该按钮

    然后使用xpath axe/substant选择当前节点的所有子节点(子节点、孙子节点等),可以向下导航到包含文本日志的范围

     driver.findElement(By.xpath("//a[@data-testid='loginButton']/descendant::span[text()='Log in']")).click();
    


    如果您想研究xpath/css选择器,请看这里:

    //span[.='Log in']/parent::div将是一个简单的xpath。为您正在使用的编程语言添加一个标记。。。看起来像Java。
     driver.findElement(By.xpath("//a[@href='/login']/descendant::span[text()='Log in']")).click();