【问题标题】:Executing Javascript on Selenium/PhantomJS在 Selenium/PhantomJS 上执行 Javascript
【发布时间】:2015-08-11 01:10:37
【问题描述】:

我在 Python 中通过 Selenium Webdriver 使用 PhantomJS,我正在尝试在页面上执行一段 JavaScript 以希望返回一段数据:

from selenium import webdriver

driver = webdriver.PhantomJS("phantomjs.cmd") # or add to your PATH
driver.set_window_size(1024, 768) # optional
driver.get('http://google.com') # EXAMPLE, not actual URL

driver.save_screenshot('screen.png') # save a screenshot to disk
jsres = driver.execute('$("#list").DataTable().data()')
print(jsres)

但是在运行时,它会报告KeyError。我找不到很多可用命令的文档,所以我有点卡在这里。

【问题讨论】:

    标签: javascript python selenium selenium-webdriver phantomjs


    【解决方案1】:

    为执行javascript而创建的方法被称为execute_script(),而不是execute()

    driver.execute_script('return $("#list").DataTable().data();')
    

    仅供参考,execute() 在内部用于发送 webdriver 命令。

    请注意,如果您希望通过 javascript 代码返回某些内容,则需要使用 return

    另请注意,这可能会引发 Can't find variable: $ 错误消息。在这种情况下,使用selenium 定位元素并将其传递到脚本中:

    # explicitly wait for the element to become present
    wait = WebDriverWait(driver, 10)
    element = wait.until(EC.presence_of_element_located((By.ID, "list")))
    
    # pass the found element into the script
    jsres = driver.execute_script('return arguments[0].DataTable().data();', element)
    print(jsres)
    

    【讨论】:

      猜你喜欢
      • 2019-05-17
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      相关资源
      最近更新 更多