Automated tests 在使用Cucumber、Selenium和;水豚?

Automated tests 在使用Cucumber、Selenium和;水豚?,automated-tests,cucumber,capybara,aws-amplify,shadow-dom,Automated Tests,Cucumber,Capybara,Aws Amplify,Shadow Dom,我正在尝试为一个应用程序的前端UI编写自动化测试,该应用程序有很多嵌套的阴影DOM,我无法使用Capybara、Cucumber和Selenium(使用chromedriver)访问它们。该应用程序正在使用AWS放大验证器。当我尝试查找输入元素时,我不断遇到以下错误: 找不到css“输入[id$='username'”(Capybara::ElementNotFound) 这就是我的测试结果: When('I在用户名字段中键入我的{string}')do | string | find('inp

我正在尝试为一个应用程序的前端UI编写自动化测试,该应用程序有很多嵌套的阴影DOM,我无法使用Capybara、Cucumber和Selenium(使用chromedriver)访问它们。该应用程序正在使用AWS放大验证器。当我尝试查找输入元素时,我不断遇到以下错误:

找不到css“输入[id$='username'”(Capybara::ElementNotFound)

这就是我的测试结果:

When('I在用户名字段中键入我的{string}')do | string | find('input[id$='username'])。set(string)end


我在其他帖子上读到chrome驱动程序支持shadow dom,但不确定在这种情况下如何处理它

目前您需要使用
evaluate\u script
来访问shadow dom-like

element = find(...) # find element that contains shadow dom
shadow_root = @session.evaluate_script(<<~JS, element)
        (function(root){
          return root.shadowRoot;
        })(arguments[0])
      JS
shadow_root.find("input[id$='username']")
element=find(…)#查找包含阴影dom的元素
shadow\u root=@session.evaluate\u脚本(