【Selenium03篇】python+selenium實現Web自動化:元素三類等待,多窗口切換,警告框處理,下拉框選擇

一、前言

最近問我自動化的人確實有點多,個人突發奇想:想從0開始講解python+selenium實現Web自動化測試,請關注博客持續更新!

這是python+selenium實現Web自動化第三篇博文

二、Selenium成套博文地址,總有你需要的:

【Selenium篇01】python+selenium實現Web自動化:搭建環境,Selenium原理,定位元素以及瀏覽器常規操作!

https://blog.csdn.net/pengjiangchun/article/details/105532670

【Selenium02篇】python+selenium實現Web自動化:鼠標操作和鍵盤操作!

https://blog.csdn.net/pengjiangchun/article/details/105532867

【Selenium03篇】python+selenium實現Web自動化:元素三類等待,多窗口切換,警告框處理,下拉框選擇

https://blog.csdn.net/pengjiangchun/article/details/105533107

【Selenium04篇】python+selenium實現Web自動化:文件上傳,Cookie操作,調用 JavaScript,窗口截圖

https://blog.csdn.net/pengjiangchun/article/details/105534081

【Selenium05篇】python+selenium實現Web自動化:讀取ini配置文件,元素封裝,代碼封裝,異常處理,兼容多瀏覽器執行

https://blog.csdn.net/pengjiangchun/article/details/105573687

【Selenium06篇】python+selenium實現Web自動化:日誌處理

https://blog.csdn.net/pengjiangchun/article/details/105574193

【Selenium07篇】python+selenium實現Web自動化:PO模型,PageObject模式!

https://blog.csdn.net/pengjiangchun/article/details/105574676

【Selenium08篇】python+selenium實現Web自動化:數據驅動框架,ddt,關鍵字驅動框架

https://blog.csdn.net/pengjiangchun/article/details/105574954

 

三、Selenium之-元素等待

參考博文:自動化測試中的三類等待深入剝析

https://blog.csdn.net/pengjiangchun/article/details/105509318

四、Selenium之-多窗口切換

在頁面操作過程中有時候點擊某個鏈接會彈出新的窗口,這時就需要主機切換到新打開的窗口上進行操作。webdriver 中的 switch_to.window() 方法,可以實現在不同窗口之間切換。

current_window_handle:獲得當前窗口句柄
window_handles:返回所有窗口的句柄到當前會話
switc_to.window():用於切換到相應的窗口

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
@Time    :   2020/4/15
@Author  :   公衆號:軟測之家  更多技術乾貨,軟測視頻,面試資料請關注!
@Contact :   軟件測試技術羣:695458161
@License :   (C)Copyright 2017-2019, Micro-Circle
@Desc    :   None
"""

from selenium import webdriver
import time

base_url = 'https://www.baidu.com/'


browser = webdriver.Chrome('../tools/chromedriver.exe')
# 隱式等待10秒
browser.implicitly_wait(10)
browser.get(base_url)


# 獲得搜索窗口的句柄
search_windows = browser.current_window_handle
browser.find_element_by_link_text('登錄').click()
browser.find_element_by_link_text('立即註冊').click()

# 活得當前打開窗口的句柄
all_handles = browser.window_handles

# 進入註冊窗口
for handle in all_handles:
    if handle != search_windows:
        browser.switch_to.window(handle)
        print('now register window!')
        browser.find_element_by_name('account').send_keys('username')
        browser.find_element_by_name('password').send_keys('password')
        time.sleep(2)

browser.quit()

五、Selenium之-警告框處理

在 webdriver 中處理 JavaScript 所生成的 alert、confirm 以及 prompt 十分簡單,具體做法是使用 switch_to.alert 方法定位到 alert/confirm/prompt,然後使用 text/accept/dismiss/ send_keys 等方法進行操作。

text:返回 alert/confirm/prompt 中的文字信息。
accept():接受現有警告框。
dismiss():解散現有警告框。
send_keys(keysToSend):發送文本至警告框。keysToSend:將文本發送至警告框。

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
@Time    :   2020/4/15
@Author  :   公衆號:軟測之家  更多技術乾貨,軟測視頻,面試資料請關注!
@Contact :   軟件測試技術羣:695458161
@License :   (C)Copyright 2017-2019, Micro-Circle
@Desc    :   None
"""

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time


base_url = 'https://www.baidu.com/'
driver = webdriver.Chrome('../tools/chromedriver.exe')
driver.implicitly_wait(10)
driver.get(base_url)

# 鼠標懸停至 “設置” 鏈接
link = driver.find_element_by_link_text('設置')
ActionChains(driver).move_to_element(link).perform()

# 打開搜索設置
driver.find_element_by_link_text('搜索設置').click()
time.sleep(3)

# 點擊 “搜索設置”
driver.find_element_by_class_name('prefpanelgo').click()
time.sleep(3)

# 接受警告框prefpanelgo
driver.switch_to.alert.accept()
time.sleep(3)

driver.quit()

六、Selenium之-下拉框處理

 webdriver 提供了 Select 類來處理下拉框。

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
@Time    :   2020/4/15
@Author  :   公衆號:軟測之家  更多技術乾貨,軟測視頻,面試資料請關注!
@Contact :   軟件測試技術羣:695458161
@License :   (C)Copyright 2017-2019, Micro-Circle
@Desc    :   None
"""

from selenium import webdriver
from selenium.webdriver.support.select import Select
from time import sleep

base_url = 'https://www.baidu.com/'
driver = webdriver.Chrome('../tools/chromedriver.exe')
driver.implicitly_wait(10)
driver.get(base_url)

# 鼠標懸停至“設置”鏈接
driver.find_element_by_name('設置').click()
sleep(2)
# 打開 “搜索設置”
driver.find_element_by_name('搜索設置').click()
sleep(2)
# 搜索結果顯示條數
# Select類用於定位select標籤。
sel = driver.find_element_by_xpath("//select[@id='nr']")
# select_by_value() 方法用於定位下接選項中的value值。
Select(sel).select_by_value('50')

driver.quit()

七、持續更新中請關注

如果你覺得此文對你有幫助,如果你對軟件測試、接口測試、自動化測試、面試經驗交流感興趣歡迎加入軟件測試技術羣:695458161,羣裏發放的免費資料都是筆者十多年測試生涯的精華。還有同行大神一起交流技術哦。

作者:諸葛
出處:https://blog.csdn.net/pengjiangchun
原創不易,歡迎轉載,但未經作者同意請保留此段聲明,並在文章頁面明顯位置給出原文鏈接。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章