2016-02-13 43 views
0

我想通過硒和python做一些網站測試。我填寫了頁面http://www.flightcentre.co.nz/並提交了表格。但現在搜索結果正在帶我到一個新的網頁 - 網址 - https://secure.flightcentre.co.nz/eyWD/results。我的網絡驅動程序現在如何處理這個問題?我是第一次這樣做。任何人都可以通過提供示例或指向我這樣的正確教程來幫助我。如何取消網頁的動態網址?

謝謝。

+0

1.您將不得不向我們展示您所嘗試過的。 2.你可以這樣做,我把你的標籤的焦點轉移到新窗口只是谷歌它 –

回答

2

好吧,因爲我試圖回答你的其他問題,我會給它在這一個去,雖然你不完全解釋你想要什麼。

有一點要記住的是Selenium運行你的瀏覽器,而不是傳統的網頁刮板。這意味着如果網址改變並不是什麼大不了的事情,唯一一次你必須改變如何處理硒的方法是當你彈出一個彈出窗口。

一兩件事你可以從其他的代碼做的是尋找一個飛行做

driver.implicitly_wait(40)//40 is the amount of seconds 

這將等待至少40秒崩潰之前,然後在每次啓動頁面加載完畢後,或什麼時候你想要做的下一步是在dom中活躍。

現在,如果您試圖抓取所有出現的航班數據,那會非常棘手。你可以做一個for循環並抓取頁面上的每個元素並將其寫入一個csv文件。

class_for_departure_flight = driver.find_elements_by_xpath('//div[@class="iata"]') 
for flights in class_for_departure_flight: 
      try: 
       with open('my_flights.csv', 'a', newline='') as flights_book: 
       csv_writer = csv.writer(flights_book, delimiter = ',') 
       csv_writer.writerow(flights.text) 
      except: 
       print("Missed a flight") 

在這第二部分中要注意的事項是我在Python中使用CSV庫來寫入數據行。記下您可以追加一組數據一起,並把它寫成一行,如:

data = (flights, dates, times) 
csv_writer.writerow(data) 

,它會右邊的所有的電子表格中的同一行的不同的事情。

另外兩件大事,很容易錯過的還有:

class_for_departure_flight = driver.find_elements_by_xpath('//div[@class="iata"]') 

是司機。find_ elements _by_xpath,你會發現元素是複數,這意味着它正在尋找具有相同class_name的多個對象,並將它們存儲在一個數組中,以便您可以在for循環中迭代它們。

接下來的部分是csv_writer.writerow(flights.text)當你迭代你的航班時,你需要抓住文本做你做的flight.text。如果你只是用搜索功能來做到這一點,那麼你也可以做這樣的事情。

class_for_departure_flight = driver.find_elements_by_xpath('//div[@class="iata"]').text 

希望這有助於!

+0

這很有道理。我不知道URL更改不會影響它。這澄清了我的全部疑問。休息是我的獎金..非常感謝。在上一個問題中,亞歷克斯的迭代解決方案解決了這個問題。 :) –

+1

太棒了! Goodluck與這個項目,絕對不是一件容易的事情,刮一個旅行社網站的東西。 –

1

這是一個良好的開端:http://selenium-python.readthedocs.org/getting-started.html

這裏有一些事情有關硒我學到了艱辛的道路:

1)當DOM刷新,你失去頁面對象的引用(即從元素= driver.find_element_by_id(「passwd-id」)返回,元素現在是陳舊的)

2)測試淺;每個測試用例都應該只執行一次斷言/頁面狀態驗證,可能是兩次。這使您可以在發生故障時拍攝屏幕截圖,並且避免處理「是測試失敗還是應用程序?」

3)這是頁面上任何JavaScript和Selenium之間的一個很大的競爭條件。在JavaScript工作來刷新DOM時,使用顯式等待來阻塞Selenium。

要清楚,這是我使用硒的經驗;因此對於每個人的經驗都不普遍。

祝你好運!希望這是有幫助的。