使用 Python 在 Selenium 中运行 javascript
Posted
技术标签:
【中文标题】使用 Python 在 Selenium 中运行 javascript【英文标题】:Running javascript in Selenium using Python 【发布时间】:2011-12-09 07:04:12 【问题描述】:我对 Selenium 完全陌生。我想在以下代码中执行一个 javascript sn-p(如代码中所述),但不能这样做。请帮忙。
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()
如果我使用 -
selenium.GetEval("submitForm('patchCacheAdd',1,'event':'ok');return false")
错误输出为 -
AttributeError: 'module' object has no attribute 'GetEval'I
【问题讨论】:
【参考方案1】:尝试使用browser.execute_script
而不是selenium.GetEval
。
例如,请参阅this answer。
【讨论】:
【参考方案2】:使用execute_script
,这是一个python示例:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://***.com/questions/7794087/running-javascript-in-selenium-using-python")
driver.execute_script("document.getElementsByClassName('comment-user')[0].click()")
【讨论】:
测试上面代码的注释【参考方案3】:如果您从 iframe 移出,您可能会迷失在页面中,最好的方式是执行一些 jquery 而不会出现问题(使用 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()')
【讨论】:
以上是关于使用 Python 在 Selenium 中运行 javascript的主要内容,如果未能解决你的问题,请参考以下文章
“Firefox 意外退出。”在 Python 中运行基本 Selenium 脚本时
在 Python 中使用 chromedriver_autoinstaller 运行 selenium 时出现问题
如何在一个选项卡中使用 Selenium 和 Python 逐一运行测试?