使用javascript executor为selenium webdriver ruby​​绑定脚本启用禁用字段

我正在编写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") 

但面对,

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

我的语法有什么问题?

任何帮助将不胜感激。

谢谢! 阿布舍克

问题

该行的问题:

 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") 

是它试图执行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) 

注意:

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

javascript代码独立于绑定语言,请尝试以下

 js.executeScript("document.getElementByID('name').value = arguments[0]","John");