4

我使用 selenium 网格(在 4 个浏览器上运行测试:FF13、FF16、IE9 和 chrome。每个浏览器都在不同的机器上。在测试的相关部分,我找到一个可点击的元素并点击它。在 FF13、IE9 和chrome 它工作得很好:找到并点击了元素。在 FF16 上,找到了该元素,并且 webdriver “声称”它点击了它,但是按钮的操作(更改页面上表格的布局)没有不会发生。

注意:我使用 2.25 版谢谢,Tizki

4

2 回答 2

2

嗯...我会使用像 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());
    }

无论如何这应该有效。希望它对你来说很清楚:)

于 2012-11-19T09:38:03.653 回答
0

webdriver我认为with的兼容性存在问题FF16FF 13.0.1由于同样的原因,我被困住了。顺便说一句,我找不到任何 Firefox 和 webdriver 之间的兼容性矩阵,但是在多次尝试在不同版本的 Firefox 上运行测试之后,我决定坚持使用真正有效的那个。

于 2012-11-19T11:50:25.813 回答