Obtenir la valeur de retour du code Javascript dans le sélénium

J'utilise Selenium2 pour quelques 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 Javascript foobar() dans ma page Web et que je veux l'appeler et obtenir la valeur de retour dans mon code Python, que puis-je appeler pour le faire?

84
demandé sur wpercy 2011-04-07 21:48:25

2 réponses

pour retourner une valeur, il suffit d'utiliser le mot-clé JavaScript return dans la chaîne de caractères passée à 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'
145
répondu Eli Courtwright 2011-04-07 17:48:40

vous pouvez retourner des valeurs même si vous n'avez pas votre code copié écrit comme une fonction comme dans le code d'exemple ci-dessous, en ajoutant simplement return var; à la fin où var est la variable que vous voulez retourner.

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 est dans URLs cette affaire.

0
répondu Eduard Florinescu 2017-12-28 12:46:26