Selenium示例集錦--常見元素識別方法、下拉框、文本域及富文本框、鼠標操作、一組元素定位、彈窗、多窗口處理、JS、frame、文件上傳和下載


元素定位及其他操作

0、常見的識別元素的方法是什么?

1 driver.find_element_by_id()
2 driver.find_element_by_name()
3 driver.find_element_by_class_name()
4 driver.find_element_by_tag_name()
5 driver.find_element_by_link_text()
6 driver.find_element_by_partial_link_text()
7 driver.find_element_by_xpath()
8 driver.find_element_by_css_selector()
web UI自動化測試元素識別的原則是什么?
如果有唯一的id,就用id定位元素;
如果沒有,最好使用xpath定位;
如果xpath定位失敗,哪個可行使用哪個。

1、下拉框

 
        
 1 #兩種方式實現下拉框的選擇操作
 2 from selenium import webdriver
 3 from selenium.webdriver.support.select import Select
 4 
 5 driver = webdriver.Firefox()
 6 driver.get("file:///C:/Users/hanxiaobei/Desktop/1.html")
 7 ele = driver.find_element_by_xpath(".//*[@id='status']")
 8 # Select(ele).select_by_index(2) #下標形式選擇
 9 Select(ele).select_by_value("2")  #源碼value值相對應方式
10 
11 '''html
12 <select id="status" class="form-control valid" onchange="" name="status">
13     <option value=""></option>
14     <option value="0">未審核</option>
15     <option value="1">初審通過</option>
16     <option value="2">復審通過</option>
17     <option value="3">審核不通過</option>
18 </select>
19 '''
另一種下拉框的編寫形式:
20
driver.find_element_by_xpath("//*[@id='status']/option[3]").click() #初審通過
21 driver.find_element_by_xpath("//option[@value='1']").click() #初審通過
 
        
 
        

 2、文本域及富文本框

一般用js進行執行,如下示例

文本域輸入:document.getElementById('_ComContent1').innerHTML="xxxxx"
富文本框輸入:document.getElementById('_ComContent1').contentWindow.document.body.innerHTML="xxxxx"

1 文本域的輸入:
2 js = "document.getElementById('_ComContent1').innerHTML='在超市賣嗎'"
3 element = dr.find_element_by_xpath(".//*[@id='_ComContent1']")
4 dr.execute_script(js,element)
5 
6 富文本框的輸入:
7 js = "document.getElementById('_ComContent1').contentWindow.document.body.innerHTML='在超市賣嗎'"
8 element = dr.find_element_by_xpath(".//*[@id='_ComContent1']")
9 dr.execute_script(js,element)

 3、鼠標操作

from selenium.webdriver.common.action_chains import ActionChains 導入控制鼠標事件的方法
1、#鼠標懸停 mm = driver.find_element_by_link_text("設置") ActionChains(driver).move_to_element(mm).perform()
#頁面顯示並可點擊的都可以嘗試用超級鏈接
driver.find_element_by_link_text("搜索設置").click()
2、#鼠標右擊
right =driver.find_element_by_xpath("xx")
ActionChains(driver).context_click(right).perform()
3、#鼠標雙擊
double =driver.find_element_by_xpath("xxx")
ActionChains(driver).double_click(double).perform()
4、#鼠標拖放
#定位元素的原位置
element = driver.find_element_by_name("xxx")
#定位元素要移動到的目標位置
target = driver.find_element_by_name("xxx")
#執行元素的移動操作
ActionChains(driver).drag_and_drop(element, target).perform()
5、#鼠標左鍵
left=driver.find_element_by_xpath("xxx")
ActionChains(driver).click_and_hold(left).perform()

4、一組元素的定位

1 #一組元素的定位
2 driver.find_element_by_link_text("復選框").click()
3 inputs = driver.find_elements_by_tag_name("input")
4 for input in inputs:
5     if  input.get_attribute("type") =="checkbox":      #避免定位的不唯一性
6         input.click()

5、彈窗

alert彈窗
1 driver.find_element_by_id("alert").click()  #定位並點擊
2 time.sleep(5)
3 alert  = driver.switch_to_alert()           #切換到彈窗上
4 print(alert.text)                           #打印彈窗信息
5 alert.accept()                              #確定
6 #alert.dismiss()                            #取消
comfrim確認框
1 driver.find_element_by_id("confirm").click() #定位並點擊
2 3 comfirm = driver.switch_to_alert()           #切換到彈窗上
4 print(comfirm.text)                          #打印彈窗信息
5 comfirm.accept()                             #確認
6 # comfirm.dismiss()                          #取消
7 
8 # driver.switch_to_alert().accept()    #直接點擊確定
prompt彈窗
1 driver.find_element_by_id("prompt").click()  #定位並點擊彈出彈窗
2 prompt = driver.switch_to_alert()            #切換並定位到彈窗
3 print(prompt.text)                           #打印彈窗上的信息
4 prompt.send_keys("我愛你你可知道")             #輸入內容
5 prompt.accept()                              #確認
6 # prompt.dismiss()                           #取消

6、多窗口處理

 
        
 1 curr_handle = driver.current_window_handle     #獲得當前句柄
 2 print("curr_handle=",curr_handle)              #打印當前句柄
 3 time.sleep(3)
 4 driver.find_element_by_link_text("python自動化測試").click()
 5 all_handle = driver.window_handles             #獲取所有的句柄
 6 for i in all_handle:
 7     if i != curr_handle:                       #如果不等於之前定義的句柄
 8         driver.switch_to_window(i)             #切換到另一個句柄
 9         time.sleep(2)
10         curr_handle1 = driver.current_window_handle
11         print("curr_handle1=",curr_handle1)
12         print(driver.title)                    #打印title
13         driver.quit()
 
        

7、JS

 
        
 1 #先定義兩個滑動頁面的方法並定義js語句,執行直接調用即可
 2 def scroll_top():
 3     if driver.name == "chrome":
 4         js = "var q=document.body.scrollTop=0"
 5     else:
 6         js = "var q=document.documentElement.scrollTop=0"
 7     return driver.execute_script(js)
 8 
 9 def scroll_foot():
10     if driver.name == "chrome":
11         js = "var q=document.body.scrollTop=10000"
12     else:
13         js = "var q=document.documentElement.scrollTop=10000"
14     return driver.execute_script(js)
15 
16 scroll_foot()   #調用滑到頁底
 
        
1 #更改屬性,隱藏形式改為文本形式
2 driver.execute_script("document.getElementById('em').type='text';")
3 #執行一個彈窗
4 driver.execute_script("alert('顯示出來啦!')")

8、frame

 

 1 第一種方式是switch_to_frame
 2 driver.find_element_by_link_text("frame1").click()
 3 driver.switch_to_frame("frame2")         #通過id定位
 4 # driver.switch_to_frame("myframe")      #通過name定位
 5 driver.find_element_by_link_text("我就是我不一樣的煙火").click() #我為自己代言為frame1的超文本鏈接
 6 
 7 第二種方式是switch_to.frame
 8 driver.switch_to.frame("iframe2")    #切到frame中
 9 driver.switch_to.parent_frame()     #從子frame切回到父frame
10 driver.switch_to.default_content()  #從frame中切回主文檔

 

9、文件上傳 

1 #定位上傳按鈕,添加本地文件
2 driver.find_element_by_name("file").send_keys('D:/selenium_use_case/upload_file.txt')

10、文件下載

 1 import os
 2 from selenium import webdriver
 3 
 4 fp = webdriver.FirefoxProfile()
 5 fp.set_preference("browser.download.folderList",2)
 6 fp.set_preference("browser.download.manager.showWhenStarting",False)
 7 fp.set_preference("browser.download.dir", os.getcwd())
 8 fp.set_preference("browser.helperApps.neverAsk.saveToDisk",
 9 "application/octet-stream")
10 
11 browser = webdriver.Firefox(firefox_profile=fp)
12 browser.get("http://pypi.python.org/pypi/selenium")
13 browser.find_element_by_partial_link_text("selenium-2").click()
14 
15 注釋:
16 browser.download.dir 用於指定所下載文件的目錄。
17 os.getcwd() 該函數不需要傳遞參數,用於返回當前的目錄。
18 application/octet-stream 為內容的類型。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM