我使用 selenium 网格(在 4 个浏览器上运行测试:FF13、FF16、IE9 和 chrome。每个浏览器都在不同的机器上。在测试的相关部分,我找到一个可点击的元素并点击它。在 FF13、IE9 和chrome 它工作得很好:找到并点击了元素。在 FF16 上,找到了该元素,并且 webdriver “声称”它点击了它,但是按钮的操作(更改页面上表格的布局)没有不会发生。
注意:我使用 2.25 版谢谢,Tizki
我使用 selenium 网格(在 4 个浏览器上运行测试:FF13、FF16、IE9 和 chrome。每个浏览器都在不同的机器上。在测试的相关部分,我找到一个可点击的元素并点击它。在 FF13、IE9 和chrome 它工作得很好:找到并点击了元素。在 FF16 上,找到了该元素,并且 webdriver “声称”它点击了它,但是按钮的操作(更改页面上表格的布局)没有不会发生。
注意:我使用 2.25 版谢谢,Tizki
嗯...我会使用像 js 注入这样的作弊方法(如果包括对 jQuery 的支持)。例如
String cssSelector="...blablabla....";
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var x=$(\'"+cssSelector+"\');");
stringBuilder.append("x.click()");
js.executeScript(stringBuilder.toString());
第二种方法(解决方案):
尝试使用DOM模型找到要单击的元素document.getElementsByTagName
-这将返回一个找到的元素数组,您可以使用Firefox中的命令行轻松找到所需的元素。所以你的元素就像:
document.getElementsByTagName[n]
n 在哪里 - 你的元素在找到的数组中的顺序document.getElementsByTagName
下面的方法代码我使用参数 tagName - 您查找元素的标签名称,而 argNum 是一个数字,您应该从数组的整个长度中减去它document.getElementsByTagName
以获得 n - 您的元素的顺序:
public void jsDirectClickUsingDOM_GEBTagName(String tagName,int argNum) throws IOException {
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("document.getElementsByTagName(\'"+tagName+"\')[document.getElementsByTagName(\'"+tagName+"\').length-"+argNum+"].click()");
js.executeScript(stringBuilder.toString());
}
无论如何这应该有效。希望它对你来说很清楚:)
webdriver
我认为with的兼容性存在问题FF16
。FF 13.0.1
由于同样的原因,我被困住了。顺便说一句,我找不到任何 Firefox 和 webdriver 之间的兼容性矩阵,但是在多次尝试在不同版本的 Firefox 上运行测试之后,我决定坚持使用真正有效的那个。