Python學習筆記之Selenium:Find命令大全
注意
selenium定位元素的函數/方法可以分為兩類:find_element及find_elements。find_element直接返回元素,如果有多個則只返回第一個,沒有找到則會報錯;find_elements以列表的形式返回所有找到的元素,如果沒找到會返回一個空列表,並不會報錯;所有的find_element都有對應的find_elements,下面只講find_element,find_elements用法是一樣的。先打開個一個瀏覽器,獲得一個webdriver實例。from selenium import webdriver mydriver=webdriver.Firefox()mydriver.get(http://xxxx)
假設打開的頁面html源碼如下:
<a id="myid" class="myclass" href="http://www.diarybook.site"name="myhome">這是超鏈接的文本</a>
1、
element=mydriver.find_element_by_class_name("myclass")
通過class屬性值定位。
2、
element=mydriver.find_element_by_id("myid")
通過id屬性值定位。
3、
element=mydriver.find_element_by_css_selector(a[name="myhome"])
通過css選擇器定位。格式是(『標籤名[屬性名=」屬性值」]』),外面 是單引號,裡面是雙引號。個人認為這是最靈活和通用的方式。
4、
element=mydriver.find_element_by_link_text("這是超鏈接的文本")
通過超鏈接的文本定位,這裡的文本就是顯示在網頁上的文字,注意看上面html代碼中文字的位置,它是在閉合的尖括弧外面的。
5、
element=mydriver.find_element_by_partial_link_text("這是超鏈接")
和上面一樣,也是通過超鏈接的文本定位,但是只要部分文字就可以,例如」這是超鏈接」包含在」這是超鏈接的文本」里。當你在一個網頁里遇到很多超鏈接,對應的超鏈接文本都是「固定部分+編號」這種格式,你就可以用這個方法把它們一起全部找到。
6、
element=mydriver.find_element_by_name("myhome")
通過name屬性值定位。
7、
element=mydriver.find_element_by_tag_name("a")
通過標籤(tag)名定位,這裡是」a」。
8、
element=mydriver.find_element_by_xpath()
不打算講這個…賊麻煩還容易出錯,瀏覽器還要裝插件才方便看。其實主要是因為我不會。
另外:在用by_class、by_id等時發現,如果含有空格及標點等特殊符號時有bug會報錯,by_css_selector正常,所以還是推薦它。推薦閱讀:
※2017,再來聊一聊Python,未來發展怎樣?
※05 爬取華為官網VMALL的手機評論
※為什麼Python類成員的調用和聲明必須有"this"?
※Python 開發者的6個必備庫