Select類、Alert類、滑鼠事件
阿新 • • 發佈:2022-04-07
https://github.com/SeleniumHQ/selenium
1.下拉框
1 from selenium import webdriver 2 from selenium.webdriver.support.select import Select 3 # 包 包 包 模組 類 4 import time 5 6 7 driver=webdriver.Chrome() 8 driver.maximize_window() 9 driver.get("file:///D:/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%AD%A6%E4%B9%A0/index(1).htmlView Code") 10 nr=driver.find_element_by_id("nr") 11 obj=Select(webelement=nr) 12 time.sleep(2) 13 #索引方式 14 obj.select_by_index(2) 15 #文字方式 16 obj.select_by_visible_text("Java語言") 17 #val方式 18 obj.select_by_value("Java") 19 time.sleep(2) 20 driver.quit()
(把整個html檔案直接拖到瀏覽器的網址處,然後複製獲取這個位址列的內容)
1.1下拉框操作步驟:
1、先匯入Select類
2、首先對Select類進行例項化
3、定位到下拉框的元素屬性
4、使用Select類進行例項化後的物件呼叫該類裡面的方法'''
以html檔案中的Java為例:
#索引方式
.select_by_index(2)
#文字方式
.select_by_visible_text("Java語言")
#val方式
.select_by_value("Java")
二、Alert類
https://element.eleme.cn/#/zh-CN
1 from selenium import webdriver 2 importView Codetime 3 4 '''確定取消按鈕''' 5 driver=webdriver.Chrome() 6 driver.maximize_window() 7 driver.get("file:///D:/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%AD%A6%E4%B9%A0/%E5%B7%A5%E5%85%B7/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/%E7%A1%AE%E5%AE%9A%E5%8F%96%E6%B6%88%E6%B6%88%E6%81%AF.html") 8 time.sleep(3) 9 driver.find_element_by_tag_name("input").click() 10 time.sleep(3) 11 #點選確定操作 12 driver.switch_to.alert.accept() 13 time.sleep(3) 14 #頁面重新整理 15 driver.refresh() 16 driver.find_element_by_tag_name("input").click() 17 time.sleep(3) 18 #點選取消操作 19 driver.switch_to.alert.dismiss() 20 time.sleep(3) 21 driver.quit() 22 23 '''獲取警告框的文字資訊''' 24 driver=webdriver.Chrome() 25 driver.maximize_window() 26 driver.get("file:///D:/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%AD%A6%E4%B9%A0/%E5%B7%A5%E5%85%B7/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/%E8%AD%A6%E5%91%8A%E6%A1%86.html") 27 time.sleep(3) 28 print(driver.switch_to.alert.text) 29 time.sleep(3) 30 driver.quit() 31 32 '''訊息對話方塊''' 33 driver=webdriver.Chrome() 34 driver.maximize_window() 35 driver.get("file:///D:/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%AD%A6%E4%B9%A0/%E5%B7%A5%E5%85%B7/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/%E6%B6%88%E6%81%AF%E5%AF%B9%E8%AF%9D%E6%A1%86.html") 36 time.sleep(3) 37 #點選按鈕 38 driver.find_element_by_tag_name("input").click() 39 time.sleep(3) 40 #輸入內容 41 driver.switch_to.alert.send_keys("WEB自動化測試") 42 time.sleep(3) 43 #點選確定 44 driver.switch_to.alert.accept() 45 time.sleep(3) 46 #重新整理 47 driver.refresh() 48 driver.find_element_by_tag_name("input").click() 49 time.sleep(3) 50 driver.switch_to.alert.send_keys("WEB自動化測試") 51 time.sleep(3) 52 #點選取消 53 driver.switch_to.alert.dismiss() 54 time.sleep(2) 55 driver.quit()
1.類中方法:
text:獲取彈出框的文字資訊
accept:是接受Confirm彈出框
dismiss:是拒絕接受Confirm彈出框
send_keys:是在Prompt訊息對話方塊裡面輸入想要輸入的內容
2.確定/取消的按鈕
.switch_to.alert.accept() 確定
.switch_to.alert.dismiss() 取消
.switch_to.alert.text
1 from selenium import webdriver 2 import time as t 3 4 driver=webdriver.Chrome() 5 driver.maximize_window() 6 driver.get("https://file.qq.com/") 7 t.sleep(6) 8 #進入到第一層的iFrame 9 driver.switch_to.frame("login_frame1") #ID方法進入iframe 10 t.sleep(3) 11 #進入到第二層的iFrame 12 driver.switch_to.frame(0) #索引方法進入iframe(這裡的索引指的是此iframe在同層級iframe中的位置) 13 t.sleep(3) 14 driver.find_element_by_xpath("/html/body/div[1]/div[9]/a[1]").click() 15 t.sleep(3) 16 driver.find_element_by_id("u").send_keys("[email protected]") 17 t.sleep(2) 18 driver.quit()View Code
1.遇到iFrame框架,解決問題的思路是:
1、先進入到iFrame的框架
(如果frame有多層,需要一層層進入。進入的方法有三種)
2、然後再定位框架裡面的元素屬性
2.怎麼判斷?
當你使用了所有的元素定位的方式並且都是正確的,但是就是提示找不到。那麼這個檢視原始碼是否存在iFrame的框架。
如果存在,通過三種方式可以進入到iFrame的框架:
1、通過ID
2、通過索引(使用索引進入框架時,需要注意索引是同層級中我們的目標iframe的索引,不要跨級去看索引了)
3、通過name(基本不使用)
四、滑鼠事件
先匯入類----例項化-----方法
1 from selenium import webdriver 2 from selenium.webdriver.common.action_chains import ActionChains 3 import time as t 4 5 '''滑鼠懸浮''' 6 driver=webdriver.Chrome() 7 driver.maximize_window() 8 driver.get("https://www.baidu.com") 9 #滑鼠事件例項化 10 obj=ActionChains(driver=driver) 11 #要定位的元素屬性的物件 12 setting=driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[4]/span") #“設定”的位置 13 obj.move_to_element(setting).perform() #把滑鼠移動到“設定” 14 t.sleep(5) 15 #點選“搜尋設定” 16 driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[4]/div[1]/div/a[1]/span").click() 17 t.sleep(5) 18 driver.quit() 19 20 '''右鍵的操作''' 21 driver=webdriver.Chrome() 22 driver.maximize_window() 23 driver.get("https://www.baidu.com") 24 #滑鼠事件進行例項化 25 obj=ActionChains(driver=driver) 26 so=driver.find_element_by_id("kw") #id定位百度搜索框 27 obj.context_click(so).perform() #對 百度搜索框右鍵操作 28 t.sleep(3) 29 driver.quit() 30 31 '''滑鼠雙擊操作''' 32 driver=webdriver.Chrome() 33 driver.maximize_window() 34 driver.get("https://www.baidu.com") 35 obj=ActionChains(driver=driver) 36 t.sleep(3) 37 driver.find_element_by_id("kw").send_keys("軟體測試") #在搜尋欄輸入內容 38 t.sleep(3) 39 soButton=driver.find_element_by_id("su") #定位到“百度一下” 40 obj.double_click(soButton).perform() #雙擊“百度一下” 41 t.sleep(5) 42 driver.quit()View Code
1.懸浮操作
類例項化物件.move_to_element(元素).perform()
類例項化物件.context_click(元素).perform()
3.雙擊操作
場景:比如付款時的立即支付按鈕,雙擊兩次會不會出現兩份賬單,這些都是測試人員需要測試的。
類例項化物件.double_click(元素).perform()