1. 程式人生 > >《手把手教你》系列練習篇之8-python+ selenium自動化測試 -壓臺篇(詳細教程)

《手把手教你》系列練習篇之8-python+ selenium自動化測試 -壓臺篇(詳細教程)

1. 簡介

   本文是練習篇的最後一篇文章,雖然練習篇的文章到此就要和大家說拜拜了,但是我們的學習之路才剛剛開始。不要停下你的腳步,大步朝前走吧!比你優秀的人還在走著,我們有什麼理由停下自己的腳步了,生命不止,學習亦是如此。好了,巨集哥的毒雞湯好

喝吧,喝夠了就開始學習吧。

  本文主要是練習如何處理iframe切換、處理alert彈窗、獲取當前頁面全部資訊、獲取頁面href屬性和如何截圖儲存等等內容,希望小夥伴或者童鞋們喜歡哈!!!

2. 處理iframe切換

  本文介紹如何利用Selenium中方法,在不同iframe中切換。

問題:有時候我們發現元素定位沒問題,在測試回放的過程,發現就是找不到元素報錯。

2.1 示例一:

  由於沒有找到合適的iframe網站,這裡不好用程式碼舉例,簡單文字加圖片來介紹。但是巨集哥輾轉反側的睡不著,最後實在是沒招了。於是自己寫了一個簡陋比較low的網頁,利用iframe網頁框架,把網頁分成上下兩個不同iframe控制的頁面,把下面html程式碼儲存到

一個記事本,然後修改名稱為index.html。

2.2 index.html

<html>
<head><title>iframe test page</title></head>
<body>
<iframe id="frame1" src="https://www.baidu.com" name="slider" height="325" width="550"></iframe>
<br>
<iframe id="frame2" src="http://example.com" name="example" height="325" width="550"></iframe>
</body>
</html>

用本地瀏覽器開啟如下圖:

用firepath來獲得百度文字輸入框的XPath截圖

看到了紅圈位置不是顯示Top Window,說明你要定位的目標元素在一個iframe裡,如果要操作這個元素,首先需要從預設的Top Window,利用switch_to.frame('iframeid')方法來切換到具體的iframe,然後才能去操作目標元素。

正常百度頁面,文字輸入框截圖

方法介紹:

driver.switch_to.frame("iframe1")
# 操作目標元素,這個目標元素在 iframe1裡面,這裡就是百度文字輸入框輸入文字
driver.switch_to.default_content() 

如果有具體專案頁面利用了iframe, 自己動手寫一下指令碼。

2.3 示例二:

  巨集哥最後終於找到了一個合適的demo來給小夥伴們或者童鞋們來用程式碼實際演練的例子如下:

步驟:

1.先確認你要操作的元素,是否存在與iframe中,如果元素在iframe中就需要切換

2.找到該iframe

3.切換到該iframe (兩種方式)

   第一種方式:有三種方法,只是單純的切換
   driver.switch_to.frame(1) #通過index(下標)
   driver.switch_to.frame('login_frame_qq') #通過name
   driver.switch_to.frame(driver.find_element_by_xpath('//iframe[@name="login_frame_qq"]')) #通過webelement

   第兩種方式:既等待元素可見又進行了iframe切換

   WebDriverWait(driver,20).until(EC.frame_to_be_available_and_switch_to_it('login_frame_qq'))

4.切換完後,就以這個iframe中的html為主html

5.返回預設的html頁面,無論現在在那一層的iframe,執行一次即可。
   driver.switch_to.default_content()

2.3.1 程式碼實現:

2.3.2 參考程式碼:
# coding=utf-8