2017-07-21 4 views
0

Je dois désactiver la règle d'origine identique pour mes autotests. J'utilise webdriver.io + serveur autonome selenium + chromedriver sur Ubuntu 16.04. Je dois obtenir le titre de l'iframe dont le domaine diffère du domaine de la page. J'ai lu ce sujet et utilisé des réponses dans mon code, mais il semble ne pas fonctionner/ Disable same origin policy in Chrome.webdriver.io ne peut pas désactiver la même règle d'origine pour l'iframe

Mon code: Une partie de wdio.conf.js

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

Une partie de mon code dans les spécifications pour obtenir le titre de 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>'  
}); 

J'ai remis en marche le serveur sélénium, des tests redémarrée, browser.debug() utilisé pour vérifier si iframe est un élément actif, vérifié que le paramètre --user-data-dir paramètre fonctionne. Est-il possible que webdriver.io ne puisse pas obtenir les valeurs de iframe ou --disable-web-security ne fonctionne pas du tout?

MISE À JOUR: Structure 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> 

Répondre

0

Je ne comprends pas ce que vous voulez faire, mais si vous le faites

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

vous pouvez tout correspondre avec vous recherchez une expression régulière. Si vous n'utilisez pas un site Web aléatoire et que vous avez accès au document, ajoutez simplement un cours. alors vous pouvez faire .getHTML ou .getText sur la classe que vous avez créée. Cependant, si vous faites .getHTML sur 'html', vous obtiendrez le html complet du document, cela signifie tout ce que vous pourriez voir dans le code source que vous obtiendrez.