【发布时间】:2018-05-11 06:13:33
【问题描述】:
我需要访问此页面 chrome://downloads/ 并检查是否已下载文件,但它是 Shadow DOM。
我发现这篇文章如何使用 Selenium Webdriver 访问 DOM 元素。 http://jeremysklarsky.github.io/blog/2015/06/13/accessing-shadow-dom-elements-with-selenium-webdriver/
但是这是用JS写的
driver.executeScript("return $('body /deep/ <#yourSelector>')")
driver.executeScript("return $('body /deep/ ._mm_column')[0].textContent").then(function(title){
title.should.contain(segmentName);
});
将其更改为 Watir 语法后,我的代码可以工作,但没有返回我想要的结果:
execute_script("return $('<#file-link>')")
execute_script("return $( '<:contains(test-file.mp3)>')")
我只是在控制台中得到 nils。
但我想要确保元素存在。
【问题讨论】:
-
作为 execute_script 的参数给出的所有内容都将是 javascript,因为您要求浏览器执行您在此处提供的任何内容。如果调用的语言是 Ruby 或 Java 或JS 如果您尝试按照示例进行操作,您可能还需要在代码中包含示例中显示的
body /deep/部分。
标签: jquery ruby selenium watir shadow-dom