我使用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)
时无法点击
driver.findElement(By.xpath("//*@id='headersignupform']/div[9]/button")).click();
但是,它没有执行脚本并抛出上述错误。如您所见,在控制台中,它使用我的代码在控制台中找到按钮。
答案 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);