下拉列表的操作
1.下拉列表是非常常見的頁面元素。是一種特殊的頁面元素,定位和其他元素沒區(qū)
別,但是其操作不其他元素不同。
2.需要導(dǎo)入包
from selenium.webdriver.support.select import Select
注意:需要把元素轉(zhuǎn)換為下列列表對象,才能點(diǎn)出下面的api
3.選擇下列列表中的元素有三種方式
? select_by_index() #索引
? select_by_visible_text()#文本
? select_by_value()#value屬性的值
鍵盤操作
? Keys()類提供了鍵盤上幾乎所有按鍵的方法。
? send_keys()方法可以用來模擬鍵盤輸入。
? 還可以用它來輸入鍵盤上的按鍵, 甚至是組合鍵, 如 Ctrl+A、 Ctrl+C 等。
? 在使用鍵盤按鍵方法前需要先導(dǎo)入 keys 類。
? from selenium.webdriver.common.keys import Keys
常用的鍵盤操作:
? send_keys(Keys.BACK_SPACE) 刪除鍵(BackSpace)
? send_keys(Keys.TAB) 制表鍵(Tab)(不常用)
? send_keys(Keys.ESCAPE) esc鍵(Esc)
? send_keys(Keys.ENTER) 回車鍵(Enter)
? send_keys(Keys.CONTROL,‘a(chǎn)’) 全選(Ctrl+A)
? send_keys(Keys.CONTROL,‘c’) 復(fù)制(Ctrl+C)
? send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)
? send_keys(Keys.CONTROL,‘v’) 粘貼(Ctrl+V)
#案例:在百度搜索欄中,進(jìn)行輸入,刪除,全選,剪切,粘貼功能
dr=webdriver.Firefox()
dr.get('http://www.baidu.com')
sleep(2)
e=dr.find_element_by_id('kw')
e.send_keys('軟件測試')
sleep(2)
e.send_keys(Keys.CONTROL,'a')
sleep(2)
e.send_keys(Keys.CONTROL,'x')
sleep(2)
dr.get('http://www.taobao.com')
sleep(2)
e=dr.find_element_by_id('q')
e.send_keys(Keys.CONTROL,'v')
sleep(2)
dr.quit()
瀏覽器控制
? 瀏覽器窗口大小的控制
dr.set_window_size(寬,高)
dr.maximize_window():最大化顯示
dr.minimize_window():最小化顯示,在最小化情況下,也可以進(jìn)行元素定位及操作
? 頁面前進(jìn)與后退
back()和forward()方法來模擬后退和前進(jìn)按鈕
#案例:進(jìn)入淘寶,然后設(shè)置瀏覽器的大小為400,500,然后最大,最小,再最大,轉(zhuǎn)入到百度,然后后退,再前進(jìn)
dr=webdriver.Firefox()
dr.get("http://www.qq.com")
sleep(2)
dr.minimize_window()
sleep(2)
dr.maximize_window()
sleep(2)
dr.set_window_size(300,300)
sleep(2)
dr.get("http://www.taobao.com")
sleep(2)
dr.back()
sleep(2)
dr.forward()
sleep(2)
dr.quit()
? 頁面刷新
driver.refresh()
? 針對瀏覽器窗口頁面截圖
get_screenshot_as_file(保存圖片的位置)
? 瀏覽窗口的關(guān)閉和瀏覽器退出
使用quit()方法,其含義為退出相關(guān)的驅(qū)動程序和關(guān)閉所有窗口。
使用close()方法,關(guān)閉單個窗口,關(guān)閉最前面的窗口
多窗口處理
多窗口的意思是一個瀏覽器中打開了多個窗口
? 瀏覽器標(biāo)簽頁的切換
?? ? 瀏覽器的標(biāo)簽頁在應(yīng)用中一般稱為頁面句柄(handle)。
?? ? 獲取當(dāng)前窗口句柄:driver.current_window_handle
?? ? 獲取瀏覽器所有句柄:driver.window_handles
?? ? 切換到指定的瀏覽器窗口:driver.switch_to.window(handle)