Ausführen von Javascript in Selen mit Python

87

Ich bin völlig neu in Selen. Ich möchte ein Javascript-Snippet im folgenden Code ausführen (wie im Code kommentiert), kann dies aber nicht. Bitte helfen Sie.

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()

Wenn ich benutze -

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

es fehlerhaft als -

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

Antworten:

122

Versuchen Sie browser.execute_scriptstatt selenium.GetEval.

Siehe diese Antwort zum Beispiel.

Petr Viktorin
quelle
58

Verwenden Sie execute_scripthier ein Python-Beispiel:

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()")
CONvid19
quelle
6

Wenn Sie von Iframes wechseln, verlieren Sie sich möglicherweise auf Ihrer Seite. Dies ist der beste Weg, um eine Abfrage ohne Probleme auszuführen (mit selenimum / 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()')
Thomas LeBlond
quelle