Я пытаюсь взаимодействовать с теневым DOM из кода WATIR. Я использовал решение JustinKo, как показано ниже. Но выдает следующую ошибку
Backtrace:: javascript error: Cannot read property 'toLowerCase' of undefined (Selenium::WebDriver::Error::JavascriptError)
когда программа встречает эту строку
Watir.element_class_for(element.tag_name.downcase).new(scope, element: element)
Моя программа
require 'watir'
# Monkey-patch due to being unable to check the tag name of the shadow root
class Watir::Browser
def wrap_element(scope, element)
Watir.element_class_for(element.tag_name.downcase).new(scope, element: element)
rescue Selenium::WebDriver::Error::UnknownError # need a better rescue
Watir::Element.new(scope, element: element)
end
end
def expand_root_element(element, browser)
browser.execute_script("return arguments[0].shadowRoot", element)
end
b=Watir::Browser.new
b.goto 'http://alis-core-lin01:8082/core_pl_env5/alis#alis'
element=b.element(xpath: "//vaadin-text-field[@id='user.name']")
shadow_dom=expand_root_element(element,b)
shadow_dom.text_field.set 'Raj'
puts 'Raj'
HTML