我使用selenium网格(在4个浏览器上运行测试:FF13,FF16,IE9和chrome。每个浏览器都在不同的机器上。 在测试的相关部分中,我找到一个可点击元素并单击它。 在FF13,IE9和chrome上工作得很好:找到了元素并点击了它。 在FF16上,找到了元素并且webdriver“声称”它点击了它,但是按钮的操作(更改页面上的表格的布局)不会发生。
注意:我使用2.25版 谢谢, Tizki
答案 0 :(得分:2)
String cssSelector="...blablabla....";
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var x=$(\'"+cssSelector+"\');");
stringBuilder.append("x.click()");
js.executeScript(stringBuilder.toString());
第二种方法(解决方案):
尝试使用document.getElementsByTagName
找到使用DOM模型单击的元素 - 这将返回找到的元素数组,您可以使用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());
}
无论如何这都应该有效。希望你能清楚地知道:)
答案 1 :(得分:0)
我认为webdriver
与FF16
的兼容性存在问题。由于同样的原因,我被FF 13.0.1
困住了。顺便说一句,我找不到Firefox和webdriver之间的任何兼容性矩阵,但经过多次尝试在不同版本的Firefox上运行测试后,我决定坚持使用真正有用的那个。