当前位置: 首页 > 知识库问答 >
问题:

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

窦夜洛
2023-03-14

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

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

共有2个答案

尉迟招
2023-03-14

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

壤驷棋
2023-03-14

嗯…我会使用类似作弊的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是元素在找到的数组< code > document . getelementsbytagname 中的顺序

下面是我与参数tagName一起使用的方法的代码,tagName是您查找元素的标记名,argNum是您应该从数组<code>文档的整个长度中减去的数字。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());
    }

无论如何,这应该是可行的。希望你清楚地知道:)

 类似资料:
  • 我的应用程序通过SmsManager.sendMultipartTextMessage发送短信,然后通知服务器短信发送的状态。 一切正常,但Yota操作员有问题。短信不会发送到 MTS 运营商的手机。Yota运营商的员工声称MTS运营商阻止接收来自Yota的消息。 这不是我们的问题,但Android系统说,这样的短信成功交付。我们无法从其他手机重新发送此类短信,因为我们的系统认为它们已经成功发送。

  • 我一直在使用一个节点。js项目进行了几个星期,它一直工作得很好。通常,我使用运行我的应用程序,并在本地主机端口3000上的浏览器中查看它。 今天,在使用npm start时,我开始出现以下错误: 我已经检查了资源监视器,没有其他进程在端口3000上运行。为什么我会收到这个错误消息? 在我的应用程序中。js我有以下代码来设置端口。。。这是不对的吗?它以前工作得很好,所以我不确定我做错了什么。 谢谢你

  • 我最近在Windows 7 Enterprise 64位操作系统上安装了带有JDK 8的Netbeans 8.2。用jdk-8u131-windows-x64.exe启动安装,安装成功。之后尝试安装netbeans-8.2-javase-windows.exe,结果给我的错误是找不到JDK。在internet上搜索后,我可以从命令提示符下使用netbeans-8.2-javase-windows.

  • 更新下面是异常消息: 更新2用真实实例替换mocked WithDefinitions对象后,我得到以下输出:

  • 我尝试了例外情况下给出的解决方案:mockito想要但没有调用,实际上与这个mock没有任何交互,而这个mockito也想要但没有调用:实际上,与这个mock没有任何交互但仍然得到相同的错误。我是不是漏掉了什么?以下是me的实现:-

  • 问题内容: 尽管我相信我正在遵循此处的说明来设置$ httpBackend以将选定的请求传递到服务器,但它对我而言不起作用。 这是一个测试失败的Plunkr, 它显示了我在做什么,并在注释中解释了似乎出错的地方。 我的观点表明,由于某种原因,该模拟没有真实的内部副本,因此,当需要传递XHR请求时,它会将其传递给模拟。第二个调用引发异常,因为它不知道如何处理请求。 对dtabuenc的回应 我很高兴