当我尝试点击按钮时出现以下错误:
org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with
命令持续时间或超时:10.06秒
我尝试了以下内容,但都没有效果:
1)如果正在加载页面,则等待10秒
2)因此使用了JS执行器:
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", By.cssSelector("#IconButton > input.IconButtonDisplay"));
3)使用等到元素可见
实际执行了第2号但是点击的结果没有结束,即新页面没有打开。
第3次出现说明按钮不可见,但按钮可见,可以手动点击。
我可以告诉你的是,使用Selenium IDE我能够播放并点击按钮没有问题。
按钮的HTML(此处不能过多地作为专有信息)。抱歉格式化:
<div widgetid="dijit__WidgetsInTemplateMixin_13" id="dijit__WidgetsInTemplateMixin_13" class="gridxCellWidget">
<div class="IconButton" widgetid="IconButton" id="IconButton" data-dojo-type="ab.cd.ef.gh.IconButton" data-dojo-attach-point="rowBtn1Pt">
<input class="IconButtonDisplay" src="/tswApp/ab/cd/ef/gh/images/edit.png" style="width: 20px;" type="image">
</div>
</div>
答案 0 :(得分:1)
在Javascript执行程序中,您希望传递WebElement的实例而不是By选择器。所以改变
/home/user1/docker
到
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", By.cssSelector("#IconButton > input.IconButtonDisplay"));
答案 1 :(得分:1)
您是否尝试过使用FirefoxDriver?
FirefoxDriver driver = new FirefoxDriver();
您是否尝试过使用此功能?这不够独特吗?
driver.findElement(By.cssSelector("input.IconButtonDisplay")).click();
如果没有,试试这个(它等同于你用JSE做的事情)
driver.findElement(By.cssSelector("#IconButton > input.IconButtonDisplay")).click();
也许它不是点击的INPUT?您是否尝试过单击任一父DIV?
driver.findElement(By.id("IconButton")).click();
或
driver.findElement(By.id("dijit__WidgetsInTemplateMixin_13")).click();
答案 2 :(得分:-1)
对我而言,这是有效的:
JavascriptLibrary jsLib = new JavascriptLibrary();
jsLib.callEmbeddedSelenium(driver,"triggerMouseEventAt", editButton,"click", "0,0");
希望这可以帮助那些遇到同样问题的人。