我有一个硒网格设置,集线器在CI(jenkins)服务器上运行。每当我从jenkins构建和运行我的项目时,它都无法执行:
WebElement inputElement = driver.findElement(By.xpath("//a[contains(@href,"/Case/Add")]"));
inputElement.sendKeys(Keys.ENTER);
或者更确切地说,selenium认为它做到了,并继续执行下一个命令,即selenium.select("id=LifeOffice", "label=AMP");
节点是虚拟机,每个虚拟机都运行不同的浏览器,只有在IE 8浏览器上执行脚本时才会出现此问题。当我从IDE运行脚本时,一切都很好。
我已经尝试过使用click ();
和((JavascriptExecutor)driver).executeScript("arguments[0].fireEvent('onclick');",inputElement);
,但我仍然有相同的问题。。。
这听起来很奇怪,但请尝试在sendkeys命令之后查看页面。如果元素在外或内,几乎接触到边界,则可能会发生这种情况:
元素从未聚焦,因为它隐藏在浏览器的滚动条/状态栏/覆盖它的页面的一部分后面。通常IE会将元素滚动到视口中并聚焦,但有时,在边缘情况下,它不会。然后在页面的状态栏/滚动条/空白部分上调用focus
(或点击或任何东西)调用。
变通办法?我只知道两个:
- 更改计算机的分辨率/窗口大小/IE布局(使其全屏,或禁用工具栏等)
-
确保你永远不会改变分辨率/窗口大小等,并在这些边缘情况下使用纯JavaScript:
((JavascriptExecutor)driver).executeScript("arguments[0].click()", inputElement);