我使用 selenium 网格(在 4 个浏览器上运行测试:FF13、FF16、IE9 和 chrome。每个浏览器都在不同的机器上。
在测试的相关部分,我找到一个可点击的元素并点击它。
在 FF13、IE9 和 chrome 上它工作得很好:元素被找到并被点击。
在 FF16 上,找到了该元素,并且 webdriver “声称”它单击了它,但按钮的操作(更改页面上表格的布局)没有发生。
注意:我使用的是 2.25 版本
谢谢,
蒂兹基
最佳答案
嗯...我会使用像 js 注入(inject)这样的作弊方法(如果包括对 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());
第二种方法(解决方案):
尝试使用
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());
}
无论如何这应该有效。希望它对你来说很清楚:)
关于Selenium webdriver - click() 成功但实际上并没有发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13442114/