查看chrome:// downloads /时如何单击下载的文件

问题描述 投票:0回答:1

作为我的自动化测试的一部分,在我的ruby capybara功能规范中,我尝试从Chrome浏览器编写测试,在下载PDF文件后,我转到chrome:// downloads /并希望能够点击文件打开它;但是由于阴影根dom对象,我无法单击链接。是否有解决方案来实现这一目标?

下面是我在它抱怨的地方尝试过:NoMethodError:#Selenium :: WebDriver :: Element的未定义方法`find':0x007f96dba3ba78

代码是:

        visit 'chrome://downloads'
        sleep(1)
        root1 = find('downloads-manager')
        shadow_root1 = expand_shadow_element(root1)

        root2 = shadow_root1.driver.browser.find_element(:css, 'iron-list')
        shadow_root2 = expand_shadow_element(root2)

        root3 = shadow_root2.find('downloads-item')
        shadow_root3 = expand_shadow_element(root3)

        file_link = shadow_root3.find("file-link")
        file.link.click

    def expand_shadow_element(element)
        shadow_root = execute_script('return arguments[0].shadowRoot', element)
        return shadow_root
    end
ruby selenium-webdriver capybara
1个回答
0
投票

你试图在本机selenium-webdriver元素上调用Capybara方法。你有一个本机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元素中,并允许使用您期望的方法。不能保证阴影dom的效果如何,因为对阴影的支持不在webdriver规范中,所以在selenium-webdriver中没有大量的支持。

© www.soinside.com 2019 - 2024. All rights reserved.