J'utilise Selenium2 pour certains tests automatisés de mon site Web et j'aimerais pouvoir obtenir la valeur de retour d'un code Javascript. Si j'ai une fonction foobar()
Javascript dans ma page Web et que je souhaite l'appeler pour obtenir la valeur de retour dans mon code Python), comment puis-je appeler pour le faire?
Pour renvoyer une valeur, utilisez simplement le mot clé return
JavaScript dans la chaîne transmise à la méthode execute_script()
, par exemple.
>>> from Selenium import webdriver
>>> wd = webdriver.Firefox()
>>> wd.get("http://localhost/foo/bar")
>>> wd.execute_script("return 5")
5
>>> wd.execute_script("return true")
True
>>> wd.execute_script("return {foo: 'bar'}")
{u'foo': u'bar'}
>>> wd.execute_script("return foobar()")
u'eli'
Vous pouvez renvoyer des valeurs même si vous n'avez pas votre code saisi en tant que fonction, comme dans l'exemple de code ci-dessous, en ajoutant simplement return var;
à la fin où var est la variable à renvoyer.
result = driver.execute_script('''cells = document.querySelectorAll('a');
URLs = []
console.log(cells);
[].forEach.call(cells, function (el) {
if(el.text.indexOf("download") !== -1){
//el.click();
console.log(el.href)
//window.open(el.href, '_blank');
URLs.Push(el.href)
}
});
return URLs''')
result
contiendra le tableau qui se trouve dans URLs
ce cas.