Вы пытаетесь вызвать методы Capybara для нативного элемента selenium-webdriver.Причина, по которой у вас есть собственный элемент selenium-webdriver, заключается в том, что вы используете execute_script
, который не должен использоваться, когда вы ожидаете возвращаемое значение - вместо этого вы должны использовать evaluate_script
def expand_shadow_element(element)
evaluate_script('arguments[0].shadowRoot', element)
end
или в последних версиях Capybara
def expand_shadow_element(element)
element.evaluate_script('this.shadowRoot')
end
Это затем обернет возвращенный элемент selenium-webdriver в элемент Capybara и позволит использовать методы, которые вы ожидаете.Никаких гарантий того, насколько хорошо это работает с shadow dom, нет, поскольку поддержка тени еще не включена в спецификацию webdriver, так что в selenium-webdriver его поддержки не так много.