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

时间:2018-12-20 18:11:39

标签: ruby selenium-webdriver capybara

作为自动化测试的一部分,在我的ruby capybara功能规范中,我尝试编写一个测试,从chrome浏览器下载PDF文件后,我去chrome:// downloads /并希望能够单击文件将其打开;但是由于存在阴影根dom对象,因此无法单击链接。有解决方案吗?

以下是我尝试过的抱怨之处:  NoMethodError:        #Selenium :: WebDriver :: Element:0x007f96dba3ba78的未定义方法'find'

代码是:

        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

1 个答案:

答案 0 :(得分:0)

您正试图在本机selenium-webdriver元素上调用Capybara方法。您拥有本机selenium-webdriver元素的原因是,您正在使用Hello2,当您期望返回值时不应该使用它-而是应该使用execute_script

evaluate_script

或在最新版本的水豚中

def expand_shadow_element(element)
  evaluate_script('arguments[0].shadowRoot', element)
end

然后将返回的selenium-webdriver元素包装在Capybara元素中,并允许使用您期望的方法。尽管不能保证阴影dom可以很好地工作,因为webdriver规范中还没有对shadow的支持,因此selenium-webdriver中没有对它的大量支持。