1. 程式人生 > 其它 >Select類、Alert類、滑鼠事件

Select類、Alert類、滑鼠事件

一、Select類

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).html
") 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()
View Code

(把整個html檔案直接拖到瀏覽器的網址處,然後複製獲取這個位址列的內容)

1.1下拉框操作步驟:

1、先匯入Select類
2、首先對Select類進行例項化
3、定位到下拉框的元素屬性
4、使用Select類進行例項化後的物件呼叫該類裡面的方法'''

 

 

1.2三種方式選擇下拉框內容:

以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 import
time 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()
View Code

1.類中方法:

text:獲取彈出框的文字資訊
accept:是接受Confirm彈出框
dismiss:是拒絕接受Confirm彈出框
send_keys:是在Prompt訊息對話方塊裡面輸入想要輸入的內容

2.確定/取消的按鈕

  .switch_to.alert.accept()   確定
.switch_to.alert.dismiss() 取消

 

 

3.獲取警告框的文字資訊

  .switch_to.alert.text  

4.訊息對話方塊

 

三、iFrame框架

 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()   

 

2.右鍵操作

  類例項化物件.context_click(元素).perform()   

 

3.雙擊操作

場景:比如付款時的立即支付按鈕,雙擊兩次會不會出現兩份賬單,這些都是測試人員需要測試的。

類例項化物件.double_click(元素).perform()