Menjalankan javascript di Selenium menggunakan Python

90

Saya benar-benar baru mengenal Selenium. Saya ingin mengeksekusi cuplikan javascript dalam kode berikut (seperti yang dikomentari di kode), tetapi tidak dapat melakukannya. Tolong bantu.

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

Jika saya menggunakan -

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

itu salah sebagai -

AttributeError: 'module' object has no attribute 'GetEval'I 
yang paling keras
sumber

Jawaban:

125

Coba browser.execute_scriptsaja selenium.GetEval.

Lihat jawaban ini sebagai contoh.

Petr Viktorin
sumber
64

Gunakan execute_script, inilah contoh 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()")
Pedro Lobito
sumber
8

Jika Anda berpindah dari iframes, Anda mungkin tersesat di halaman Anda, cara terbaik untuk menjalankan beberapa jquery tanpa masalah (dengan 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
sumber