selenium 常見方法和頁面元素的操作
歡迎加入學習交流QQ群:657341423
selenium總共有八種定位方法
By.id() 通過id定位
By.name() 通過name 定位
By.xpath() 通過xpath定位
By.className() 通過className定位
By.cssSelector() 通過CSS 定位
By.linkText() 通過linkText
By.tagName() 通過tagName
By.partialLinkText() 通過匹到的部分linkText
其中用得最多的是xpath,cssSelector,而且用這兩種定位,基本上可以解決大部分網頁定位困難,至於id,name有時候不能適用於網頁,這個具體情況還是看網頁Html怎樣設計的。
XPath-利用元素屬性定位
find_element_by_xpath("//input[@id=‘kw’]")
find_element_by_xpath("//input[@name=‘wd’]")
find_element_by_xpath("//*[@id=‘kw’]")
//input表示查詢頁面上所有的input元素
*//表示查詢頁面上所有元素
//input[1]表示查詢頁面上第一個input元素
//form[1]/input 表示查詢第一個form元素下一級的input元素
//form[1]//input 表示查詢頁面上第一個form元素下的所有input元素,不管巢狀了多少層
//input[@id=‘kw’ and @class=‘su’] 可以用 and 連線多個屬性來唯一標識一個元素
查詢頁面根元素://
查詢頁面上所有的input元素://input
查詢頁面上第一個form元素內的直接子input元素(即只包括form元素的下一級input元素,使用絕對路徑表示,單/號)://form[1]/input
查詢頁面上第一個form元素內的所有子input元素(只要在form元素內的input都算,不管還巢狀了多少個其他標籤,使用相對路徑表示,雙//號)://form[1]//input
查詢頁面上第一個form元素://form[1]
查詢頁面上id為loginForm的form元素://form[@id=‘loginForm’]
查詢頁面上具有name屬性為username的input元素://input[@name=‘username’]
查詢頁面上id為loginForm的form元素下的第一個input元素://form[@id=‘loginForm’]/input[1]
查詢頁面具有name屬性為contiune並且type屬性為button的input元素://input[@name=‘continue’][@type=‘button’]
查詢頁面上id為loginForm的form元素下第4個input元素://form[@id=‘loginForm’]/input[4]
常見的cssSelector的定位方式:
定位id為flrs的div元素,可以寫成:#flrs 注:相當於xpath語法的//div[@id=’flrs’]
定位id為flrs下的a元素,可以寫成 #flrs > a 注:相當於xpath語法的//div[@id=’flrs’]/a
定位id為flrs下的href屬性值為/forexample/about.html的元素,可以寫成: #flrs > a[href=”/forexample/about.html”]
如果需要指定多個屬性值時,可以逐一加在後面,如#flrs > input[name=”username”][type=”text”]。
*此外,cssSelector還有一些高階用法,如果熟練後可以更加方便地幫助我們定位元素,如我們可以利用^用於匹配一個字首,$用於匹配一個字尾,用於匹配任意字元。例如:
匹配一個有id屬性,並且id屬性是以”id_prefix_”開頭的超連結元素:a[id^=‘id_prefix_’]
匹配一個有id屬性,並且id屬性是以”_id_sufix”結尾的超連結元素:a[id$=’_id_sufix’]
匹配一個有id屬性,並且id屬性中包含”id_pattern”字元的超連結元素:a[id*=‘id_pattern’]
通過class屬性定位
find_element_by_css_selector(".類屬性值") class選擇器選擇class="a"的所有元素,點號(.)表示通過class屬性定位元素
driver.find_element_by_css_selector(".s_ipt").send_keys(“css”)
driver.find_element_by_css_selector(".bg s_btn").click()
通過id定位元素
find_element_by_css_selector("#id值") id選擇器選擇id="a"的所有元素,#號表示通過id屬性定位元素
driver.find_element_by_css_selector("#kw").send_keys(“huh”)
driver.find_element_by_css_selector("#su").submit()
通過標籤名定位元素(少用)
find_element_by_css_selector(“input”)
通過標籤屬性定位
find_element_by_css_selector("[屬性名=屬性值]")
driver.find_element_by_css_selector("[ maxlength=‘255’]").send_keys(“dfaf”)
driver.find_element_by_css_selector("[ value=‘百度一下’]").submit()
對於屬性值來說,可加引號,也可以不加,但注意和整個字串的引號進行區分!!!
通過標籤父子關係定位(少用吧)
find_element_by_css_selector(“父標籤>子標籤”)
find_element_by_css_selector(“span>input”)表示選擇父標籤為span的所有input元素
組合定位(通過父子標籤和其屬性結合)
組合定位可以大大加強定位元素的唯一性!
driver.find_element_by_css_selector(“form#form>span>input”).send_keys(“asfa”)
driver.find_element_by_css_selector(“form#form>span>input#su”).click()
要定位的元素是input,父元素是span,爺元素是form;
要定位的元素是input(可以結合它的屬性值),父元素是span,爺元素是form(可以結合它的屬性值)
其實通過css定位也可以像xpath定位那樣通過firebug工具獲得再修改,或選擇要定位的標籤後右鍵-》複製css路徑也行。
各種方式在選擇的時候應該怎麼選擇:
-
當頁面元素有id屬性時,最好儘量用id來定位。但由於現實專案中很多程式設計師其實寫的程式碼並不規範,會缺少很多標準屬性,這時就只有選擇其他定位方法。
-
xpath很強悍,但定位效能不是很好,所以還是儘量少用。如果確實少數元素不好定位,可以選擇xpath或cssSelector。
-
當要定位一組元素相同元素時,可以考慮用tagName或name。
-
當有連結需要定位時,可以考慮linkText或partialLinkText方式。
歡迎加入學習交流QQ群:657341423
相關文章
- selenium定位與常見操作
- selenium測試框架篇,頁面物件和元素物件的管理框架物件
- 使用protractor操作頁面元素
- 【Python】selenium 基礎使用:頁面元素定位方法彙總Python
- Selenium常用操作——關閉頁面和瀏覽器瀏覽器
- 常見頁面佈局
- selenium之如何使用cssSelector定位頁面元素CSS
- 常見塊元素和內聯元素
- 爬蟲學習日記(十一)selenium 頁面元素更新爬蟲
- Selenium webdriver Java 元素操作WebJava
- js獲取操作iframe子頁面中元素JS
- 用 CSS 隱藏頁面元素的 5 種方法CSS
- selenium+python3 web自動化獲取html頁面元素屬性值方法PythonWebHTML
- 頁面元素大全
- Java Map和List常見操作Java
- Selenium Web元素定位方法Web
- Linux 和 macos 常見的埠操作LinuxMac
- 常見的DOM操作
- 編寫HTML頁面常見的CSS樣式問題HTMLCSS
- git 常見問題及操作方法Git
- html&css基礎_頁面常見文字設定HTMLCSS
- Selenium的自我總結2_元素基本操作
- JS常見的字串操作JS字串
- 常見的查詢操作
- Centos 常見操作CentOS
- mysql常見操作MySql
- js操作網頁中的元素JS網頁
- 解謎遊戲常見元素遊戲
- Python Selenium等待(waits)頁面載入完成的三種方法PythonAI
- javascript頁面元素座標JavaScript
- Selenium系列教程- 04常用的元素定位方法
- Python Selenium操作Cookie的方法PythonCookie
- Selenium webdriver 元素定位方法總結Web
- jquery實現的iframe子頁面和父頁面的相互操作jQuery
- 常見的反爬蟲和應對方法爬蟲
- 常見網頁相容性問題的解決方法網頁
- 表空間常見的操作
- linux常見的操作(轉)Linux