97 votes

Exécuter du javascript dans Selenium en utilisant Python

Je suis totalement nouveau sur Selenium. Je veux exécuter un extrait de code javascript dans le code suivant (comme commenté dans le code), mais je ne peux pas le faire. S'il vous plaît aider.

 from selenium import webdriver
import selenium
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time

patch = raw_input("Enter patch number\n")
rel = raw_input("Enter release\n")
plat = raw_input("Enter port\n")

browser = webdriver.Firefox()

browser.get("xxxxxxxxxxxxxxxxx")

pdtfamily = browser.find_element_by_id("prodFamilyID")
pdtfamily.send_keys("Database & Tools" + Keys.TAB)
time.sleep(5)

pdt = browser.find_element_by_id("productID")
pdt.send_keys("Intelligent Agent" + Keys.TAB)
time.sleep(5)

pdt1 = browser.find_element_by_id("patchCacheChkBxID")
pdt1.send_keys(Keys.SPACE)
time.sleep(5)

pdt7 =  browser.find_element_by_id("M__Idf")
pdt7.send_keys(plat)

pdt8 =  browser.find_element_by_id("M__Idg")
pdt8.send_keys("American English")

# Here I want to execute this javascript - "submitForm('patchCacheAdd',1,{'event':'ok'});return false"

browser.close()

Si j'utilise -

 selenium.GetEval("submitForm('patchCacheAdd',1,{'event':'ok'});return false")

il se trompe comme -

 AttributeError: 'module' object has no attribute 'GetEval'I 

133voto

Petr Viktorin Points 13687

Essayez browser.execute_script au lieu de selenium.GetEval .

Voir cette réponse par exemple.

68voto

Pedro Lobito Points 6794

Utilisez execute_script , voici un exemple python :

 from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://stackoverflow.com/questions/7794087/running-javascript-in-selenium-using-python") 
driver.execute_script("document.getElementsByClassName('comment-user')[0].click()")

8voto

Thomas LeBlond Points 81

Si vous quittez les iframes, vous risquez de vous perdre dans votre page, le meilleur moyen d'exécuter des jquery sans problème (avec seleimum/python/gecko) :

 # 1) Get back to the main body page
driver.switch_to.default_content()

# 2) Download jquery lib file to your current folder manually & set path here
with open('./_lib/jquery-3.3.1.min.js', 'r') as jquery_js: 
    # 3) Read the jquery from a file
    jquery = jquery_js.read() 
    # 4) Load jquery lib
    driver.execute_script(jquery)
    # 5) Execute your command 
    driver.execute_script('$("#myId").click()')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X