2012-11-18 88 views
3

我使用硒网格(在4个浏览器上运行测试:FF13,FF16,IE9和铬,每个浏览器是在不同的机器上) 在相关部分测试中,我发现一个可点击的元素,点击它 在FF13,IE9和Chrome它工作得很好:。元素被发现并得到了点击 在FF16中,元素被发现和webdriver的“索赔”,它点击它,但按钮的动作(改变表的布局在页面上)不会发生硒webdriver - 点击()成功,但实际上并没有发生

注:我使用的版本2.25 感谢, Tizki

+0

你有一段代码,我们可以重现此? – Arran

+0

您是否有可能触及类似[此Selenium bug](http://code.google.com/p/selenium/issues/detail?id=3602)?屏幕边缘是否存在有问题的元素,并与状态栏/滚动条/任何内容重叠? –

+0

我忘了提,该应用程序是基于GWT。我试图点击的按钮是一个带有静态ID的div。我使用element = driver.findElement(By.id(“button-id”)); element.click();我不认为元素ID重叠,至少它看起来不是这样。 –

回答

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()); 

第二个方法(解决方案): 试图找到你的元素点击使用使用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()); 
    } 

这应该反正工作。希望对你来说很清楚:)

+0

不错的工作:) – Anuragh27crony

+0

感谢您的答案,我试过你的解决方案,但它仍然无法使用FF16,在我看来像一个webdriver问题。 –

0

我认为存在兼容性问题webdriverFF16。由于相同的原因,我坚持使用FF 13.0.1。顺便说一下,我找不到Firefox和webdriver之间的任何兼容性矩阵,但是经过多次试图在不同版本的Firefox上运行测试,我决定坚持一个真正有效的方法。

相关问题