【问题标题】:How fix selenium-webriver error - $ is not defined?如何修复 selenium-webdriver 错误 - $ 未定义?
【发布时间】:2015-04-24 14:25:13
【问题描述】:

我正在尝试向按钮添加事件:

str = "a#fCoverage" // my locator
def str2 = "\$('" + str + "').addEventListener('click', function(){alert('text')});" // add event
js.exec(str2)

但我收到此错误:

错误:org.openqa.selenium.WebDriverException:未知错误:$ 未定义

谁能帮帮我?

【问题讨论】:

  • 使用“window.jQuery”而不是“$”...
  • 你能举个例子吗?

标签: java javascript selenium groovy selenium-webdriver


【解决方案1】:

addEventListenerdocument 上的一个方法,而不是 $(它通常是 jQuery 的简写)。

所以将$ 更改为document

【讨论】:

  • 为什么字符串 "$(location.reload())" 在控制台中工作,但在我运行测试时不工作?测试代码:js.exec('$(location.reload())') browser.driver.executeScript('$(location.reload())')
  • 虽然 - location.reload 是一个 JavaScript 命令,它与 jQuery 无关。你让它变得比它需要的复杂得多。 location.reload() 就是您所需要的。至于控制台,$ 是否真的映射到了 jQuery?在控制台中执行$ === jQuery => 是否返回true
  • 是的,$ === jQuery true
  • 那么当您在测试中执行location.reload 时会发生什么? ....你为什么不做一个driver.navigate.refresh(或者在你的语言中是等价的)?....
  • 我只是想了解为什么如果我在控制台中编写 $('a#fCoverage').addEventListener('click', function(){alert('text')}); // 一切都很好,但如果我在测试中做同样的事情,我会在测试中出现错误($ 未定义),我使用 js.exec("my string") 或 browser.driver.executeScript("my string")跨度>
【解决方案2】:

使用document.querySelector 代替$

你的代码会结束

str = "a#fCoverage" // my locator
def str2 = "document.querySelector('" + str + "').addEventListener('click', function(){alert('text')});" // add event
js.exec(str2)

【讨论】:

    猜你喜欢
    • 2021-10-01
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    相关资源
    最近更新 更多