Selenium webdriver - click() 成功但实际上并没有发生

标签 selenium webdriver selenium-webdriver selenium-grid

我使用 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/

相关文章:

css - 如何使用 ruby​​ 获取 style - "width"的百分比值?

python - 尝试从 Web 表中提取数据时出现 Selenium 错误

java - driver.getPageSource() 将符号 < 转换为 <

Selenium 读取 DOM 速度极慢

python - selenium IDE 命令 'openWindow' 是否有等效的 selenium python webdriver 命令?

python - 使用 Python 在 Selenium 中模拟鼠标移动

python - 在 Selenium 中显示当前光标位置

python - 解析生成的网页 Python Selenium

java - 一种使用 Java Robot API 和 Selenium WebDriver by Java 进行文件上传的解决方案

python - 如何在 python 中使用 selenium 提交此表单?