使用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)
注意:
- 我们可以使用selenium-webdriver定位元素,然后传递该元素以在
execute_script
使用(作为arguments[0]
)。 - 要使字段不再禁用,您实际上需要删除disabled属性(而不是将其值设置为false)。
- 你应该小心使用这样一个显式的xpath,因为它可能非常脆弱 – 例如,一个小的改变就会破坏它。
javascript代码独立于绑定语言,请尝试以下
js.executeScript("document.getElementByID('name').value = arguments[0]","John");