【问题标题】:Capybara ,MSEdgeDriver : Selenium::WebDriver::Error::JavascriptError: javascript error: arguments[0].matches is not a functionCapybara ,MSEdgeDriver : Selenium::WebDriver::Error::JavascriptError: javascript error: arguments[0].matches 不是函数
【发布时间】:2021-07-08 13:47:07
【问题描述】:

我正在使用 ruby​​ 2.7、Selenium -WebDriver 3.142.7、Capybara 3.35.3、MSEdgeDriver 91.0.864.48、Cucumber 5.3.0 执行测试用例。 .我的页面在加载后就被杀死了。请在下面找到日志。

在端口 17557 上启动 MSEdgeDriver 91.0.864.48 (27d934e7c76a9077a5bb7cc1512b894d360169ec) 只允许本地连接。 有关保持 MSEdgeDriver 安全的建议,请参阅 https://chromedriver.chromium.org/security-considerations。 MSEdgeDriver 已成功启动。 2021-07-08 16:24:50 DEBUG Selenium 轮询 ["127.0.0.1", 17557] 上的套接字 2021-07-08 16:24:51 INFO Selenium -> POST 会话 2021-07-08 16:24:51 信息硒 >>> http://127.0.0.1:17557/session | {"desiredCapabilities":{"browserName":"MicrosoftEdge","version":"","platform":"WINDOWS","javascriptEnabled":true,"cssSelectorsEnabled":true,"takesScreenshot":true,"nativeEvents" :true,"rotatable":true,"ms:edgeOptions":{"args":["--disable-web-security"],"w3c":false}},"capabilities":{"firstMatch":[ {"browserName":"MicrosoftEdge","ms:edgeOptions":{"args":["--disable-web-security"],"w3c":false}}]}}

2021-07-08 16:25:02 DEBUG Selenium > {"Accept"=>"application/json", "Content-Type"=>"application/json; charset=UTF-8", "User-代理"=>"selenium/3.142.7 (ruby macosx)", "Content-Length"=>"2153"} 2021-07-08 16:25:02 信息硒 POST 会话/4f68a951ade6a304143ceb876d58f8dd/执行 2021-07-08 16:25:02 信息硒 >>> http://127.0.0.1:17557/session/4f68a951ade6a304143ceb876d58f8dd/execute | {"script":"return arguments[0].matches(':disabled, select:disabled *')","args":[{"element-6066-11e4-a52e-4f735466cecf":"0.1779752229405389-1"} ]} 2021-07-08 16:25:02 DEBUG Selenium > {"Accept"=>"application/json", "Content-Type"=>"application/json; charset=UTF-8", "User-Agent"= >“硒/3.142.7(ruby macosx)”,“内容长度”=>“144”} 2021-07-08 16:25:02 INFO Selenium

请帮忙。谢谢。

【问题讨论】:

  • 警告:此人从不接受他的问题的答案。
  • 您是否尝试通过 WebDirver 执行脚本代码?如果您使用的是Element.matches(),那么它应该可以工作,就像this case 中的答案一样。但是我不确定你的代码有没有问题,如果你能提供一个重现问题的最小代码sn-p,这将有助于找出问题的原因。
  • @XudongPeng 嗨,先生,我做了很多研究,我觉得实际问题出在 CSS 选择器上。我更改了 #element :username, '.login-box form:first-of-type #username ' to element :username,'#username[type=text]' ,然后它开始工作,但问题是我正在使用本机事件与元素示例交互:userField = self.login_page.username userField.native.send_keys(username) 和当 Capybara 没有找到任何元素时,它会杀死页面
  • @XudongPeng 先生您好,我得到了这个问题。如果我们使用带有“be_visible”断言的 R 规范,那么它适用于 chrome,但不适用于 Edge 浏览器。我用“be_present”替换了它,它适用于两个浏览器。
  • @Prophet 很抱歉给您带来不便,我会处理的

标签: selenium-webdriver capybara microsoft-edge


【解决方案1】:

我做了很多研究,我觉得实际问题出在 CSS 选择器上。我将 #element :username, '.login-box form:first-of-type #username' 更改为 element :username,'#username[ type=text]' ,然后它开始打印正确的错误。我使用的是“be_visible” Rspec,因此我收到错误“MSEdgeDriver : Selenium::WebDriver::Error::JavascriptError: javascript error: arguments[0].matches is not a function”。我将其替换为“be_present " 并且它适用于 Edge 和 Chrome 浏览器。

【讨论】:

  • 感谢您发布此问题的解决方案。您可以将其标记为已接受的答案。它可以在未来帮助其他社区成员解决类似的问题。感谢您的理解。
猜你喜欢
  • 1970-01-01
  • 2015-03-13
  • 1970-01-01
  • 2014-07-24
  • 2017-11-10
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
相关资源
最近更新 更多