本文介绍了使用 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)

注意:

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

这篇关于使用 javascript 执行器为 selenium webdriver ruby​​ 绑定脚本启用禁用字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-31 12:42