Java Selenium Webdriver Xpath不工作

Java Selenium Webdriver Xpath不工作,java,selenium,xpath,selenium-webdriver,Java,Selenium,Xpath,Selenium Webdriver,我正在尝试使用selenium webdriver单击链接文本,但不起作用 这是照片 在使用firebug的firefox上,我得到了xpath html/body/div[1]/div/div/div[2]/div[2]/div[2]/a 我曾经 driver.findElement(By.xpath(“html/body/div[1]/div/div/div[2]/div[2]/div[2]/a”)。单击() 但是仍然不起作用,有什么原因吗?我在html代码中看到name属性,但元素类

我正在尝试使用selenium webdriver单击链接文本,但不起作用

这是照片

在使用firebug的firefox上,我得到了xpath

html/body/div[1]/div/div/div[2]/div[2]/div[2]/a
我曾经

driver.findElement(By.xpath(“html/body/div[1]/div/div/div[2]/div[2]/div[2]/a”)。单击()


但是仍然不起作用,有什么原因吗?

我在html代码中看到name属性,但元素类型是隐藏的。Selenium不与隐藏的元素交互。尝试使用其他路径,如“
//input[@id='offerId']/../a

首先回答您在注释4中的问题,有两种方法可以编写xpath

  • 相对xpath:此xpath以“/”开头,表示从DOM中的特定位置搜索元素

  • 绝对xpath:此xpath以
    html/body
    开头,表示从DOM的第一个标记中搜索元素

  • 相对xpath搜索比绝对xpath搜索快,因为它从文档中的特定位置而不是从DOM的根进行搜索

    关于你的主要问题:

    请尝试使用以下代码:
    driver.findElement(By.xpath(“/*[text()='HTML code']”)和
    driver.findElement(By.xpath(“/*[text()='Offer Selection']”)


    希望这有帮助:)

    尝试下面的代码,使用部分链接文本单击链接

    wait.until(ExpectedConditions.elementToBeClickable(By.partialLinkText("EARN up to 2.5% on")));
    driver.findElement(By.partialLinkText("EARN up to 2.5% on")).click();
    

    可能有多种原因。我想到了一些:1)你的HTML截图显示了一些关于iframe的信息;您的场景是否确实涉及到框架?2) 任何以“html”开头的XPath都没有得到正确的优化,几乎可以保证是脆弱的。检查后,代码中根本没有iFrame。。。尝试使用“driver.findelement(By.name)”,但仍然不起作用请澄清“不起作用”!当我尝试“driver.findelement(By.name)”时,消息说找不到元素,name…我还不明白为什么xpath以“body”开头,您使用了什么名称?通过查看您的HTML,我没有看到任何名称属性。我必须同时使用您提供的代码还是只使用其中一个?它会是“driver.findelelement(By.xpath(“/*[text()=”在g...]上赚取高达2.5%”)您可以使用xpath来标识网页上的各个元素。