本文介绍了使用 javascript 执行器为 selenium webdriver ruby 绑定脚本启用禁用字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在 Selenium Webdriver 脚本中编写以下 Ruby 代码,以通过 Javascript 执行器启用 UI 上的禁用字段.
I am writing following Ruby code in Selenium Webdriver script to enable a disabled field on UI through Javascript executor.
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)
`handleEvaluateEvent': syntax error (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.
Is that it is trying to execute selenium-webdriver code instead javascript - ie browser.find_element
is not javascript.
解决方案
相反,请执行以下操作:
Instead, do the following:
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)
注意:
- 我们可以使用 selenium-webdriver 定位元素,然后将该元素传递给
execute_script
使用(作为arguments[0]
). - 要使字段不再禁用,您实际上需要删除 disabled 属性(而不是将其值设置为 false).
- 您应该小心使用这样一个显式的 xpath,因为它可能非常脆弱 - 例如,一个小改动就会破坏它.
这篇关于使用 javascript 执行器为 selenium webdriver ruby 绑定脚本启用禁用字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!