【问题标题】:Running javascript in Selenium using Python使用 Python 在 Selenium 中运行 javascript
【发布时间】: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 

【问题讨论】:

    标签: javascript python selenium


    【解决方案1】:

    尝试使用browser.execute_script 而不是selenium.GetEval

    例如,请参阅this answer

    【讨论】:

      【解决方案2】:

      使用execute_script,这是一个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()")
      

      【讨论】:

      • 测试上面代码的注释
      【解决方案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()')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-06
        • 1970-01-01
        • 2014-07-17
        • 2013-06-09
        • 1970-01-01
        相关资源
        最近更新 更多