使用javascript executor为Selenium Webdriver红宝石绑定脚本启用禁用字段

Sof*_*ast 3 javascript ruby automated-tests selenium-webdriver

我正在Selenium Webdriver脚本中编写以下Ruby代码,以通过Javascript执行程序在UI上启用禁用字段。

browser.execute_script("browser.find_element(:xpath,'/html/body/div[5]/div/div[3]/div[2]/div[2]/div/div/div/div/div/div/input'.disabled = false")
Run Code Online (Sandbox Code Playgroud)

但是面对

`handleEvaluateEvent':语法错误(Selenium :: WebDriver :: Error :: JavascriptError)

我的语法有什么问题?

任何帮助将不胜感激。

谢谢!阿比舍克

Jus*_* Ko 5

问题

该行的问题:

browser.execute_script("browser.find_element(:xpath,'/html/body/div[5]/div/div[3]/div[2]/div[2]/div/div/div/div/div/div/input'.disabled = false")
Run Code Online (Sandbox Code Playgroud)

是否正在尝试执行selenium-webdriver代码而不是javascript-即browser.find_element不是javascript。

而是,请执行以下操作:

input_field = browser.find_element(:xpath, '/html/body/div[5]/div/div[3]/div[2]/div[2]/div/div/div/div/div/div/input')
browser.execute_script('arguments[0].removeAttribute("disabled");', input_field)
Run Code Online (Sandbox Code Playgroud)

注意:

  1. 我们可以使用selenium-webdriver找到该元素,然后将该元素传递给execute_script(作为arguments[0])使用。
  2. 要使字段不再被禁用,实际上您需要删除disabled属性(而不是将其值设置为false)。
  3. 您应该谨慎使用这样的显式xpath,因为它可能非常脆弱-例如,一个小的更改就会破坏它。