2015-05-28 110 views
4

我通過硒webdriver的Python中使用PhantomJS Javascript和我想在返回的數據塊的希望在頁面上執行一段JavaScript代碼:執行硒/ PhantomJS

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。我無法找到有關可用命令的很多文檔,所以我有點卡在這裏。

回答

7

用於執行JavaScript的創建的方法被稱爲execute_script(),不​​:

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

FYI,​​在內部用於發送的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)