一、selenium常用方法
注意:下面的driver均爲實例化對象
from selenium import webdriver
#1創建driver對象
driver = webdriver.Phantomjs()
1.獲取當前頁面的Url
方法:current_url
實例:driver.current_url
2.獲取元素座標
方法:location
解釋:首先查找到你要獲取元素的,然後調用location方法
實例:driver.find_element_by_xpath("xpath").location
3.表單的提交
方法:submit
解釋:查找到表單(from)直接調用submit即可
實例:driver.find_element_by_id("form1").submit()
4.獲取CSS的屬性值
方法:value_of_css_property(css_name)
解釋:查找到css選擇器標籤選擇器input獲取CSS的屬性值input.btn
實例:driver.find_element_by_css_selector("input.btn").value_of_css_property("input.btn")
5.獲取元素的屬性值
方法:get_attribute(element_name)
解釋:查找到id爲kw的值
實例:driver.find_element_by_id("kw").get_attribute("kw")
6.判斷元素是否被選中
方法:is_selected()
實例:driver.find_element_by_id("form1").is_selected()
7.返回元素的大小
方法:size
實例:driver.find_element_by_id("iptPassword").size
返回值:{'width': 250, 'height': 30}
8.判斷元素是否顯示
方法:is_displayed()
實例:driver.find_element_by_id("iptPassword").is_displayed()
9.判斷元素是否被使用
方法:is_enabled()
實例:driver.find_element_by_id("iptPassword").is_enabled()
10.獲取元素的文本值
方法:text
實例:driver.find_element_by_id("iptUsername").text
11.元素賦值
方法:send_keys(*values)
實例:driver.find_element_by_id("iptUsername").send_keys('admin')
12.返回元素的tagName
方法:tag_name
實例:driver.find_element_by_id("iptUsername").tag_name
13.刪除瀏覽器所有的cookies
方法:delete_all_cookies()
實例:driver.delete_all_cookies()
14.刪除指定的cookie
方法:delete_cookie(name)
實例:deriver.delete_cookie("my_cookie_name")
15.關閉瀏覽器
方法:close()
實例:driver.close()
16.關閉瀏覽器並且退出驅動程序
方法:quit()
實例:driver.quit()
17.返回上一頁
方法:back()
實例:driver.back()
18.清空輸入框
方法:clear()
實例:driver.clear()
19.瀏覽器窗口最大化
方法:maximize_window()
實例:driver.maximize_window()
20.查看瀏覽器的名字
方法:name
實例:drvier.name
21.返回當前會話中的cookies
方法:get_cookies()
實例:driver.get_cookies()
22.根據cookie name 查找映射Value值
方法:driver.get_cookie(cookie_name)
實例:driver.get_cookie("NET_SessionId")
23.截取當前頁面
方法:save_screenshot(filename)
實例:driver.save_screenshot("D:\\Program Files\\Python27\\NM.bmp")
二、selenium十八種定位方法
前八種是大家都熟悉的,經常會用到的
- 1.id定位: find_element_by_id(self, id_)
- 2.name定位: find_element_by_name(self, name)
- 3.class定位: find_element_by_class_name(self, name)
- 4.tag定位: find_element_by_tag_name(self, name) ## 標籤名
- 5.link定位: find_element_by_link_text(self, link_text)
- 6.partial_link定位 : find_element_by_partial_link_text(self, link_text)
- 7.xpath定位: find_element_by_xpath(self, xpath)
- 8.css定位: find_element_by_css_selector(self, css_selector)
這八種是複數形式
- 9.id複數定位: find_elements_by_id(self, id_)
- 10.name複數定位: find_elements_by_name(self, name)
- 11.class複數定位: find_elements_by_class_name(self, name)
- 12.tag複數定位: find_elements_by_tag_name(self, name)
- 13.link複數定位: find_elements_by_link_text(self, text)
- 14.partial_link: 複數定位find_elements_by_partial_link_text(self, link_text)
- 15.xpath複數定位: find_elements_by_xpath(self, xpath)
- 16.css複數定位: find_elements_by_css_selector(self, css_selector
這兩種就是快失傳了的
- 17.find_element(self, by=‘id’, value=None)
- 18.find_elements(self, by=‘id’, value=None)
-
element方法定位到是是單數,是直接定位到元素
-
elements方法是複數,這個學過英文的都知道,定位到的是一組元素,返回的是list隊列
-
可以用type()函數查看數據類型
-
打印這個返回的內容看看有什麼不一樣
elements用法總結:
何時使用: 用elements方法如何定位元素,當一個頁面上有多個屬性相同的元素時,然後父元素的屬性也比較模糊,不太好定位。
使用方法: 這個時候不用怕,換個思維,別老想着一次定位到,可以先把相同屬性的元素找出來,取對應的第幾個就可以了。
三、selenium方法整理
一、常用庫導入
1.from selenium import webdriver 導入webdriver模塊
2.from selenium.webdriver import ActionChains 導入動作鏈類,動作鏈可以儲存鼠標的動作,並一起執行
3.from selenium.webdriver.common.key import Key 鍵盤操作使用的是Keys類,一般配合send_keys使用
4.from selenium.webdriver.support.select import Select 下拉框的操作都交由Select類進行處理
5.from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC 顯示等待使用的類
二、基本操作
1.瀏覽器相關操作
創建瀏覽器對象 driver = webdriver.xxx()
窗口最大化 maximize_window()
獲取瀏覽器尺寸 get_window_size()
設置瀏覽器尺寸 set_window_size()
獲取瀏覽器位置 get_window_position()
設置瀏覽器位置 set_window_position(x,y)
關閉當前標籤/窗口 close()
關閉所有標籤/窗口 quit()
View Code
2.頁面相關操作
請求某個url driver.get(url)
刷新頁面操作 refresh()
回退到之前的頁面 back()
前進到之後的頁面 forward()
獲取當前訪問頁面url current_url
獲取當前瀏覽器標題 title
保存圖片 get_screenshot_as_png()/get_screenshot_as_file(file)
網頁源碼 page_source
View Code
3.頁面元素的定位(八種定位方式)
id定位 driver.find_element_by_id(value)
name屬性值定位 driver.find_element_by_name(value)
類名定位 driver.find_element_by_class_name(value)
標籤名定位 driver.find_element_by_tag_name(value)
鏈接文本定位 driver.find_element_by_link_text(value)
部分鏈接文本 driver.find_element_by_partial_link_text(value)
xpath路徑表達式 driver.find_element_by_xpath(value)
css選擇器 driver.find_element_by_css_selector(value)
4.元素的操作
對元素的相關操作,一般要先獲取到元素,再調用相關方法 element = driver.find_element_by_xxx(value)
點擊操作 element.click()
清空輸入框 element.clear()
輸入框輸入數據 element.send_keys(data)
獲取文本內容(既開閉標籤之間的內容) element.text
獲取屬性值(獲取element元素的value屬性的值) element.get_attribute(value)
View Code
5.鼠標和鍵盤操作
鼠標操作需要導入類,見第一部分,然後創建對象ActionChains(driver),鍵盤操作導入類見第一部分
鼠標右擊
el = driver.find_element_by_xxx(value)
context_click(el)
鼠標雙擊
el = driver.find_element_by_xxx(value)
ActionChains(driver).double_click(el).perform()
鼠標懸停
el = driver.find_element_by_xxx(value)
ActionChains(driver).move_to_element(el).perform()
常用鍵盤操作
send_keys(Keys.BACK_SPACE) 刪除鍵(BackSpace)
send_keys(Keys.SPACE) 空格鍵(Space)
send_keys(Keys.TAB) 製表鍵(Tab)
send_keys(Keys.ESCAPE) 回退鍵(Esc)
send_keys(Keys.ENTER) 回車鍵(Enter)
send_keys(Keys.CONTROL,‘a’) 全選(Ctrl+A)
send_keys(Keys.CONTROL,‘c’) 複製(Ctrl+C)
send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)
send_keys(Keys.CONTROL,‘v’) 粘貼(Ctrl+V)
View Code
6.彈出框操作
進入到彈出框中 driver.switch_to.alert()
接收警告 accept()
關閉警告 dismiss()
發送文本到警告框 send_keys(data)
7.下拉框操作
將定位到的下拉框元素傳入Select類中 selobj = Select(element)
通過索引選擇,index 索引從 0 開始 select_by_index()
通過值選擇(option標籤的一個屬性值) select_by_value()
通過文本選擇(下拉框的值) select_by_visible_text()
查看所有已選 all_selected_options
查看第一個已選 first_selected_option
查看是否是多選 is_multiple
查看選項元素列表 options
取消選擇 deselect_by_index() /deselect_by_value()/ deselect_by_visible_text()
8.滾動條操作
js = "window.scrollTo(x,y) " x爲水平拖動距離,y爲垂直拖動舉例
driver.execute_script(js)
js= “var q=document.documentElement.scrollTop=n” n爲從頂部往下移動滾動舉例
driver.execute_script(js)
9.cookies操作
獲取所有cookies get_cookies()
獲取key對應的值 get_cookie(key)
設置cookies add_cookie(cookie_dict)
刪除指定名稱的cookie delete_cookie(name)
刪除所有cookie delete_all_cookies()
10.多標籤/多窗口、多表單/多框架切換
多表單/多框架切換
直接使用id值切換進表單 driver.switch_to.frame(value)
定位到表單元素,再切換進入
el = driver.find_element_by_xxx(value)
driver.switch_to.frame(el)
跳回最外層的頁面 driver.switch_to.default_content()
跳回上層的頁面 driver.switch_to.parent_frame()
多標籤/多窗口之間的切換
獲取所有窗口的句柄 handles = driver.window_handlers
通過窗口的句柄進入的窗口 driver.switch_to.window(handles[n])