Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Polymer 是否可以使用Watir Webdriver与聚合物进行交互?_Polymer_Watir Webdriver - Fatal编程技术网

Polymer 是否可以使用Watir Webdriver与聚合物进行交互?

Polymer 是否可以使用Watir Webdriver与聚合物进行交互?,polymer,watir-webdriver,Polymer,Watir Webdriver,我刚刚更新了我的Chrome浏览器版本50.0.2661.75,发现chrome://downloads 页面已更改,因此我的自动测试无法再与之交互。以前,我一直在使用Watir Webdriver清除下载页面,从我的机器上删除文件,等等,没有太多困难 看起来谷歌在这个页面上使用了聚合物 对我来说,有一些新的元素,比如纸按钮,是Watir Webdriver无法识别的 甚至浏览器。img:id,“文件图标”。是否存在?当我 可以清楚地看到页面上的图像 自动化用聚合物制作的页面,特别是chrome

我刚刚更新了我的Chrome浏览器版本50.0.2661.75,发现chrome://downloads 页面已更改,因此我的自动测试无法再与之交互。以前,我一直在使用Watir Webdriver清除下载页面,从我的机器上删除文件,等等,没有太多困难

看起来谷歌在这个页面上使用了聚合物

对我来说,有一些新的元素,比如纸按钮,是Watir Webdriver无法识别的

甚至浏览器。img:id,“文件图标”。是否存在?当我 可以清楚地看到页面上的图像


自动化用聚合物制作的页面,特别是chrome://downloads 在对Watir Webdriver进行更改之前,页面将一直处于丢失状态,或者是否有此问题的解决方案?

看起来Google将元素放在了Shadow Dom中,而Selenium/Watir/Webdriver规范还不支持此功能。可能有一种方法可以通过javascript browser.execute_脚本获取元素,但它充其量只是实验性的。

考虑到下载项目可以通过javascript访问,并且正如@titusfortner所指出的那样,Watir可以自动生成新的下载页面

注意聚合物中的阴影根元素又名局部DOM

下面是一个Javascript示例,它记录每个下载项目的图标状态和文件名,并从列表中删除这些项目。将代码片段复制并粘贴到Chrome的控制台中,以便在OS X El Capitan上的Chrome 49.0.2623.112中进行测试验证

(function() {
  var items = document
                .querySelector('downloads-manager')
                .$$('iron-list')
                .querySelectorAll('downloads-item');

  Array.from(items).forEach(item => {
    let hasIcon = typeof item.$$('#file-icon') !== 'undefined';
    console.log('hasIcon', hasIcon);

    let filename = item.$$('#file-link').textContent;
    console.log('filename', filename);

    item.$.remove.click();
  });
})();
更新:我使用ChromeDriver 2.21在OS X中使用Watir Webdriver验证了Javascript。它的工作原理与我在控制台中的工作原理相同,即,我看到控制台日志,下载项被删除。以下是复制的步骤:

在新的irb外壳复制+粘贴中运行以下命令: 需要“watir webdriver” b=Watir::Browser.new:chrome 在新打开的Chrome窗口中,下载几个文件以创建一些下载项目,然后打开下载选项卡

在irb外壳复制+粘贴中运行以下命令:

脚本=函数{ var项目=文档 .querySelector'downloads-manager' .$$‘铁名单’ .querySelectorAll'downloads-item'; Array.fromitems.forEachitem=>{ 让hasIcon=项目类型。$$‘文件图标’!==‘未定义’; console.log'hasIcon',hasIcon; 让filename=item.$$'file-link'.textContent; log'filename',filename; 项。$.remove.click; }; }; b、 执行脚本 请注意,下载选项卡不再包含下载项目

从下载选项卡打开Chrome控制台

观察控制台显示几行hasIcon true和下载项目的文件名


尝试自动化Polymer页面时,我发现我可以通过在URL中添加?dom=shady来请求Polymer使用shady dom来访问web元素。如本页示例所示:


将DOM参数添加到请求聚合物以使用阴暗的DOM可能值得一试。

如果您考虑JS来解决聚合物集成问题,请参见PSK的主要APP.JS,我将查看是否可以使其工作。我对Javascript了解不多,而且我发现您的代码中有一些语法错误。在我的问题中指定的Linux Chrome版本上尝试了它,也在一个与您的版本更接近的版本上尝试了它,但仍然是Linux:49.0.2623.110。还有一个散乱的点导致了语法错误。现在修好了。啊,迷路的小点似乎是它的症结所在。它清除了我的大部分下载,奇怪的是只剩下了一些,但这只是一个开始。谢谢在选择答案之前,我将做更多的工作。您的脚本在控制台中工作,但我在使用Watir Webdriver实现它时遇到困难。可能是因为Watir Webdriver对Polymer不满意,但肯定是因为我缺乏扎实的Javascript技能。希望我能得到你的想法为我工作-我需要做一些其他的事情,除了这个脚本所做的。但我感谢你的帮助,并对你的答案投了赞成票。我不认为Watir Webdriver与Polymer有任何问题,因为我刚刚用它验证了Javascript。请看更新的答案。哇,考虑到所有使用Webdriver的东西,这一改变将破坏全世界的许多自动化。”感谢谷歌的支持
http://example.com/test-app/index.html?dom=shady