2015-05-11 51 views
0

我有一個問題,嘗試使用硒在driver.get中的JSON數據。正如你在下面看到的,我得到的錯誤是我不能在這個方法中使用更多的2個agruments。Python Selenium driver.get達到最大的參數?

for d in data["screen"]: 
    display = Display(visible=1, size=(800, 600)) 
    display.start() 
    driver = webdriver.Chrome() 
    driver.get("https://",d["server"],"/test",sep='') 

TypeError: get() takes exactly 2 arguments (4 given) 

這讓我覺得,這不是讓varibale數據到driver.get場正確的方法?

回答

0

以這種方式獲取JSON數據並不理想。它會做和你使用瀏覽器一樣的事情。硒得到的數據,但它會顯示爲一個瀏覽器頁面,你仍然必須得到它從瀏覽器做任何事情。我會用requests來獲取這些數據,而不是通過Selenium。

無論如何,如果你想要做的是建立一個URL,那麼Selenium將不會爲你做。你必須調用driver.get之前做到這一點:

driver.get("https://" + d["server"] + "/test") 

我不知道是什麼sep=''是命中註定的。我將它解釋爲指定之前的參數之間的分隔符。如果是這樣,那麼這是不需要的。否則,你必須澄清。

+0

啊感謝那的作品,但它不是開放單獨的顯示的它只是覆蓋 – Grimlockz

+0

你問一個關於一個特定的錯誤信息,您收到答案的問題。你在這裏評論中指出的是與同一段代碼有關的問題,但這是一個不同的問題。你應該問一個新的問題,它關注*這個新問題*並詳細解釋你想要什麼和你期望的。我強烈建議*反對*在這裏編輯你的問題,因爲a)你已經得到答案,並且b)它會讓你的問題對其他人不那麼有用,並且隨着時間的推移不太可能獲得upvotes。 – Louis

+0

對不起,試圖用一塊石頭殺死兩隻鳥 – Grimlockz

0

你要創建的顯示和驅動器只有一次最有可能的,然後只get內循環:

display = Display(visible=1, size=(800, 600)) 
display.start() 
driver = webdriver.Chrome() 
for d in data["screen"]: 
    driver.get("https://",d["server"],"/test",sep='') 
    print(driver.page_source) 

我假設你來來自R與sep='';在Python中你可以用+串聯,那就是:

driver.get("https://" + d["server"] + "/test") 

由於@Louis建議,你可以也可能只使用請求模塊,如果你的數據不被JavaScript加載(和頁面不需要JavaScript是啓用):

import requests 
for d in data["screen"]: 
    response = requests.get("https://" + d["server"] + "/test") 
    print(response.content)