2013-05-16 73 views
0

在我以前的步驟中,我有一個問題,從div獲取文本,幾個小時後終於得到了我想要的,但下一步並不容易,因爲我想循環打印文本(變量)。如何在Python中循環提取硒與硒?

我希望你是放縱的傢伙,我不會得到downvoted只是因爲我是新的python。 這是我已經得到了一部分:

import selenium 
from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get('http://example.com//') 
botloc = driver.find_element_by_id('botloc').text 
print botloc 

def repeat(): 
    while 1 == 1: 
     botloc = driver.find_element_by_id('botloc').text 
     print botloc 

一個真正的網站地址已經更改,作爲預防措施。

代碼的前半部分工作正常,但第二部分沒有。 在Shell中輸入repeat後,響應爲<function repeat at 0x015BBFB0>。這不是來自div的文本,對我來說(新手)它看起來像對象值或什麼...當print botloc後的迴應是u'26,40',那麼爲什麼我的def repeat()是不一樣的?我該如何解決這個問題?

+0

您正在輸入'repeat'?你不需要輸入'repeat()'來評估函數嗎?函數是Python中的第一類對象(據我所知)。您可以像其他任何物體一樣將它們傳遞出去。因此,在沒有括號的情況下輸入'repeat'就可以得到'repeat'變量所保存的函數對象。 – jpmc26

+0

爲什麼你的''repeat''函數包含一個while循環(它永遠不會結束)?你想用它達到什麼目的? – lqc

+0

@lqc我的'重複'函數包含一個while循環,因爲我想實現包含在div中的實際文本,該文本反映了我的英雄在Web瀏覽器中的方形地圖上的座標。座標將被用於與機器人通信,給他他真正的位置。也許我的邏輯被打破了,我走了迂迴的路線,但那還是我自己的邏輯,我不知道另一種獲得座標的方式。你知道意外有時候是最好的!但感謝stackoverflow。 – Mezulith

回答

0

用下面的代碼創建一個文件selenium.py

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get('http://www.helloworld.com/') 
print driver.find_element_by_css_selector("a[href*='privacy']").text 

def repeat(): 
    while 1 == 1: 
     print driver.find_element_by_css_selector("a[href*='privacy']").text 

repeat() # this is what you need! 

更改URL,以你自己的一個,並更改定位器到你的,即driver.find_element_by_id('botloc').text

然後在命令行:運行python selenium.py,它應該是工作

不過,我雖然懷疑你的測試邏輯,如果在循環過程的DOM的變化,將引發異常。

+0

無限循環在測試中不是很有用。 – lqc

+0

謝謝你,我沒想到我是那麼接近於正確的代碼。感謝您的修復。所以,現在,當我移動我的英雄,在otput是:'26,19 26,19 26,19 26,20 26,20 26,20 26,20 26,21 26,21 26,21 26,21 26,22 26,22 26,22 26,23 26,23 26,24 26,24 26,25'座標更新速度非常快,我想現在我會放一些時間函數來創建它,每0.2秒:) – Mezulith