Selenium webdriver 无法单击链接

Selenium webdriver 无法单击链接,selenium-webdriver,Selenium Webdriver,我一直试图在工作时点击我的应用程序中的链接,但控件未能点击我使用的任何定位器中的链接。在脚本中使用Selenium IDE和javascript之前,我用它们测试了所有定位器,在运行测试之前,它们看起来都很好。我设法识别并点击以下链接: @FindBy(css=“/html/body/div[4]/div/div/div[2]/div[1]/a/strong”)但是我第二次运行了测试,但它没有点击相同的链接 请参见下面的html代码: 您应该单击参数。删除strong属性 /@FindBy(cs

我一直试图在工作时点击我的应用程序中的链接,但控件未能点击我使用的任何定位器中的链接。在脚本中使用Selenium IDE和javascript之前,我用它们测试了所有定位器,在运行测试之前,它们看起来都很好。我设法识别并点击以下链接:
@FindBy(css=“/html/body/div[4]/div/div/div[2]/div[1]/a/strong”)
但是我第二次运行了测试,但它没有点击相同的链接

请参见下面的html代码:


您应该单击参数。删除
strong
属性

/@FindBy(css ="/html/body/div[4]/div/div/div[2]/div[1]/a")

您应该单击参数。删除
strong
属性

/@FindBy(css ="/html/body/div[4]/div/div/div[2]/div[1]/a")

使用绝对Xpath不是一个好主意。正如您所说的,它是第一次工作,那么在单击一次之后,您的DOM结构可能会发生变化

您可以尝试使用以下xpath:

driver.findElement(By.xpath("//strong[contains(.,'< Back to Search Results')]")).click();
driver.findElement(By.xpath(//strong[contains(,“<返回搜索结果”))))。单击();
如果仍然不工作,您应该尝试单击使用JavascriptExecutor,因为它直接在HTMLDOM上工作。根据您的方便,可以在以下代码中找到元素:

WebElement element=driver.findElement(By.xpath("//strong[contains(.,'< Back to Search Results')]"));
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);
WebElement=driver.findElement(By.xpath(//strong[contains(,“
使用绝对Xpath不是一个好主意。正如您所说的,它是第一次工作,那么在单击一次之后,您的DOM结构可能会发生变化

您可以尝试使用以下xpath:

driver.findElement(By.xpath("//strong[contains(.,'< Back to Search Results')]")).click();
driver.findElement(By.xpath(//strong[contains(,“<返回搜索结果”))))。单击();
如果仍然不工作,您应该尝试单击使用JavascriptExecutor,因为它直接在HTMLDOM上工作。根据您的方便,可以在以下代码中找到元素:

WebElement element=driver.findElement(By.xpath("//strong[contains(.,'< Back to Search Results')]"));
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);
WebElement=driver.findElement(By.xpath(//strong[contains(,“
我一般避免使用XPath,尤其是从HTML标记开始的XPath。这使得测试非常脆弱。我建议使用如下CSS选择器

driver.findElement(By.cssSelector("#breadcrumb-content > a")).click();
CSS选择器读取find A
A
标记,该标记是ID(#)为
breadcrumb content
的元素的子(>)


阅读更多信息。

我一般避免使用XPath,尤其是从HTML标记开始的XPath。这使得测试非常脆弱。我建议使用如下CSS选择器

driver.findElement(By.cssSelector("#breadcrumb-content > a")).click();
CSS选择器读取find A
A
标记,该标记是ID(#)为
breadcrumb content
的元素的子(>)

阅读更多关于