xpath不能与Selenium Webdriver一起使用

时间:2017-10-04 10:22:33

标签: xpath selenium-webdriver

我使用Google Chrome作为网络驱动程序。

注册按钮代码为:

<button type="submit" class="signupbtn btn_full btn btn-action btn-block btn-lg">
    <span class="ink animate" style="height: 488px; width: 488px; top: -215px; left: -118px;"></span>
    <i class="fa fa-check-square-o"></i> 
    Sign Up
</button>

错误代码是::

  

线程中的异常&#34; main&#34; org.openqa.selenium.WebDriverException:   未知错误:元素在点(681,658)

时无法点击

执行的我的Xpath代码是:

driver.findElement(By.xpath("//*@id='headersignupform']/div[9]/button")).click();

但是,它没有执行脚本并抛出上述错误。如您所见,在控制台中,它使用我的代码在控制台中找到按钮。

enter image description here

4 个答案:

答案 0 :(得分:2)

您需要使用焦点或滚动该元素。 您也可能必须使用明确等待。

WebElement element = driver.findElement(By.xpath("//*@id='headersignupform']/div[9]/button"));
Actions actions = new Actions(driver);
actions.moveToElement(element);
actions.perform();

如果仍无效,请使用JavascriptExecutor

JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);

答案 1 :(得分:2)

似乎 Sign Up 按钮有叠加层。因此,要直接与 Sign Up 按钮互动,我们需要获得 JavascriptExecutor 的帮助,如下所示:

WebElement button = driver.findElement(By.xpath("//button[@class='signupbtn btn_full btn btn-action btn-block btn-lg']"));
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("arguments[0].click();", button);

答案 2 :(得分:0)

您可以将动作类用于相同的

WebElement element = driver.findElement(By.xpath("//*[@id='headersignupform']/div[9]/button"));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().perform();

第二件事总是建议使用精确标签而不是* [@ id =“”]。

答案 3 :(得分:0)

似乎“注册”按钮有一个叠加层。因此,要直接与“注册”按钮进行交互,我们需要获取JavascriptExecutor的帮助,如下所示:

WebElement button = driver.findElement(By.xpath("//button[@class='signupbtn btn_full btn btn-action btn-block btn-lg']")); JavascriptExecutor jse = (JavascriptExecutor)driver; jse.executeScript("arguments[0].click();", button);