我使用硒网格(在4个浏览器上运行测试:FF13,FF16,IE9和铬,每个浏览器是在不同的机器上) 在相关部分测试中,我发现一个可点击的元素,点击它 在FF13,IE9和Chrome它工作得很好:。元素被发现并得到了点击 在FF16中,元素被发现和webdriver的“索赔”,它点击它,但按钮的动作(改变表的布局在页面上)不会发生硒webdriver - 点击()成功,但实际上并没有发生
注:我使用的版本2.25 感谢, Tizki
我使用硒网格(在4个浏览器上运行测试:FF13,FF16,IE9和铬,每个浏览器是在不同的机器上) 在相关部分测试中,我发现一个可点击的元素,点击它 在FF13,IE9和Chrome它工作得很好:。元素被发现并得到了点击 在FF16中,元素被发现和webdriver的“索赔”,它点击它,但按钮的动作(改变表的布局在页面上)不会发生硒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());
第二个方法(解决方案): 试图找到你的元素点击使用使用document.getElementsByTagName
DOM模型 - 这将返回找到元素的数组,你可以使用命令行的Firefox很容易找到需要的元素。 所以你的元素如:
document.getElementsByTagName[n]
哪里是N - 你的元素中找到阵列的顺序document.getElementsByTagName
下面方法的代码,我带参数标记名使用 - 你寻找你的元素标签的名称通过和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());
}
这应该反正工作。希望对你来说很清楚:)
不错的工作:) – Anuragh27crony
感谢您的答案,我试过你的解决方案,但它仍然无法使用FF16,在我看来像一个webdriver问题。 –
我认为存在兼容性问题webdriver
与FF16
。由于相同的原因,我坚持使用FF 13.0.1
。顺便说一下,我找不到Firefox和webdriver之间的任何兼容性矩阵,但是经过多次试图在不同版本的Firefox上运行测试,我决定坚持一个真正有效的方法。
你有一段代码,我们可以重现此? – Arran
您是否有可能触及类似[此Selenium bug](http://code.google.com/p/selenium/issues/detail?id=3602)?屏幕边缘是否存在有问题的元素,并与状态栏/滚动条/任何内容重叠? –
我忘了提,该应用程序是基于GWT。我试图点击的按钮是一个带有静态ID的div。我使用element = driver.findElement(By.id(“button-id”)); element.click();我不认为元素ID重叠,至少它看起来不是这样。 –