webdriver.io无法禁用iframe的同源政策

时间:2017-07-21 11:45:27

标签: node.js selenium iframe same-origin-policy webdriver-io

我需要为自动测试禁用同源策略。 我在Ubuntu 16.04上使用 webdriver.io + selenium独立服务器+ chromedriver。 我需要从iframe获取具有与页面域不同的域的标题。 我已经阅读了这个主题,并在我的代码中使用了答案,但它似乎不起作用/ Disable same origin policy in Chrome

我的代码: wdio.conf.js的一部分

capabilities: [{
        maxInstances: 5,
        browserName: 'chrome',
        chromeOptions : {
            args: ["--disable-web-security", "--user-data-dir:path/to/profile"]
        }
    }],

我的规范部分代码获取iframe的标题:

it('step' , function() {
  var iframeValue = browser.element('#iframe_id').value;
  browser.frame(iframeValue);
  browser.waitForExist('title'); //or any element inside head or body
  browser.getTitle(); //returns page title, not iframe
  browser.element('title').getText(); //returns ''
  browser.element('title').getHTML(); //returns '<title>iframe title</title>'     
});

我已重新启动selenium服务器,重新启动测试,使用browser.debug()检查iframe是否为活动元素,检查该配置文件--user-data-dir参数是否有效。 webdriver.io是否有可能无法从iframe获取值或--disable-web-security根本不起作用?

更新: iframe的结构:

<iframe src="http://www.example.com" id="iframe_id"></iframe>
    #document
    <html>
    <head>
        <title>iframe title</title>
    </head>
    <body>
        <div>
            <!--content-->
        </div>
    </body>
    </html>

1 个答案:

答案 0 :(得分:0)

我不明白你想做什么,但如果你做了

browser.getHTML('html').then(function(data) {
// match something from data with regex
}

您可以使用正则表达式匹配您搜索的所有内容。如果您没有废弃随机网站并且您可以访问该文档,那么只需添加一个类。然后你可以在你创建的类上创建.getHTML或.getText。但是,如果您在&#39; html&#39;上制作.getHTML那么你将获得文档的完整html,这意味着你将在源代码中看到的所有内容。