我想点击自动化中的一个按钮,使用selenium webdriver& Phantom JS。但它没有点击按钮。
HTML代码:
<button id="play" class="next-play"><span>play</span></button>
我试过了:
@FindBy(css = "#play")
private WebElement Btnplay;
Btnplay.click();
我也尝试过:
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();", Btnplay);
同样的事情,我尝试使用ID和XPATH但不使用phantomJS。它在我使用任何浏览器时都有效。
我拍了截图运行时间,我发现它没有点击按钮。
当我在控制台中看到错误时,它说无法找到元素 [点击播放后在下一页中] 。所以它似乎可能是点击但不会进入下一页。
注意:网站是使用Html / Css和JS构建的。点击按钮,它只是通过JS更改屏幕。
更新:点击元素并进入下一个屏幕。问题是在下一个屏幕中有4个元素但是当我通过屏幕截图检查时,它在页面上仅显示2个元素。我应该使用元素可见性等待吗?
答案 0 :(得分:1)
由于您没有提供详细的HTML,我将假设该应用程序也是使用一些AJAX构建的。众所周知,当涉及到AJAX时,很少有事情变得非常重要。
问题和可能的解决方案:
driver.findElement()
调用driver.findElement(whatever)
直接调用,您也希望使用Explicit wait并确保元素状态已准备好接受点击,然后执行点击我强烈怀疑最后一种情况就是这种情况,您可能希望在手动执行操作或深入了解应用程序代码时调查UI触发的事件。