最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python2 Selenium元素定位的實(shí)現(xiàn)(8種)

 更新時(shí)間:2019年02月25日 14:55:05   作者:白雪  
這篇文章主要介紹了Python2 Selenium元素定位的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

當(dāng)我們想讓 Selenium 自動(dòng)地操作瀏覽器時(shí),就必須告訴 Selenium 如何去定位某個(gè)元素或一組元素,每個(gè)元素都有著不同的標(biāo)簽名和屬性值,Selenium 提供了以下8種定位元素的方式,每種方式對應(yīng)了2個(gè)方法:
find_element_by_( ),是用來定位單個(gè)元素的,find_elements_by_( ),是用來定位多個(gè)元素的。

  • 通過 id 定位
  • 通過 name 定位
  • 通過 class 定位
  • 通過 tag 定位
  • 通過 link 定位
  • 通過 partial link 定位
  • 通過 xpath 定位
  • 通過 css 選擇器定位

下面以百度首頁為例進(jìn)行舉例說明:

1.通過 id 定位

find_element_by_id(id)
find_elements_by_id(id)

# _*_ coding:utf-8 _*_
from selenium import webdriver

driver = webdriver.Chrome() 
driver.maximize_window()   
driver.get("https://www.baidu.com/") 
# 定位id為“kw”的元素
input_text = driver.find_element_by_id("kw")
input_text.send_keys("selenium")

driver.quit()

2.通過通過 name 定位

find_element_by_name(name)
find_elements_by_name(name)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome() 
driver.maximize_window()   
driver.get("https://www.baidu.com/") 
# 定位name為“wd”的元素
input_text = driver.find_element_by_name("wd")
input_text.send_keys("selenium")

driver.quit()

3.通過 class 定位

find_element_by_class_name(name)
find_elements_by_class_name(name)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome() 
driver.maximize_window()   
driver.get("https://www.baidu.com/") 
# 定位class名稱為“s_ipt”的元素
input_text = driver.find_element_by_class_name("s_ipt")
input_text.send_keys("selenium")

driver.quit()

4.通過 tag 定位

find_element_by_tag_name(name)
find_elements_by_tag_name(name)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome() 
driver.maximize_window()   
driver.get("https://www.baidu.com/") 
# 定位標(biāo)簽為<input>的元素
input_text = driver.find_elements_by_tag_name("input")
print(len(input_text))
driver.quit()

5.通過 link 定位

find_element_by_link_text(link_text)
find_elements_by_link_text(link_text)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome() 
driver.maximize_window()   
driver.get("https://www.baidu.com/") 
# 定位鏈接文本完全匹配“我新聞”的元素
news = driver.find_element_by_link_text("新聞")
news.click()

driver.quit()

6.通過 partial link 定位

find_element_by_partial_link_text(link_text)
find_elements_by_partial_link_text(link_text)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome() 
driver.maximize_window()   
driver.get("https://www.baidu.com/") 
# 定位鏈接文本部分匹配“新”的元素
news = driver.find_element_by_partial_link_text("新")
news.click()

driver.quit()

7.通過 xpath 定位

find_element_by_xpath(xpath)
find_elements_by_xpath(xpath)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome() 
driver.maximize_window()   
driver.get("https://www.baidu.com/") 
# xpath定位,相對路徑與屬性結(jié)合定位搜索框
news = driver.find_element_by_xpath("http://input[@id='kw']")
news.click()

driver.quit()

8.通過 css 選擇器定位

find_element_by_css_selector(css_selector)
find_elements_by_css_selector(css_selector)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome() 
driver.maximize_window()   
driver.get("https://www.baidu.com/") 
# css選擇器,id定位密碼輸入框
news = driver.find_element_by_css_selector('#kw')
news.click()

driver.quit()

通用的終極定位語法

上面的所有元素定位 find_element_by_xxx和find_elements_by_xxx調(diào)用的結(jié)果,實(shí)際上都是在調(diào)用以下兩種方法,我們也可以直接調(diào)用一下兩種方法即可。

find_element(self, by=By.ID, value=None):
find_elements(self, by=By.ID, value=None):

class By(object):
  """
  Set of supported locator strategies.
  """

  ID = "id"
  XPATH = "xpath"
  LINK_TEXT = "link text"
  PARTIAL_LINK_TEXT = "partial link text"
  NAME = "name"
  TAG_NAME = "tag name"
  CLASS_NAME = "class name"
  CSS_SELECTOR = "css selector"

例如:

from selenium.webdriver.common.by import By
# 根據(jù)id,定位id為“world”的元素
world = driver.find_element(By.ID,"world")
print(world.text)
# xpath定位,相對路徑與屬性結(jié)合 定位密碼輸入框
password = driver.find_element(By.XPATH,"http://input[@name='password']")
print(password.get_attribute("value"))
# css選擇器,標(biāo)簽+屬性 定位用戶名輸入框
username = driver.find_element(By.CSS_SELECTOR,"input[name='username']")
print(username.get_attribute("value"))

這里只是簡單介紹了8種元素定位方式的使用,比較簡單易用的是通過id、name、class定位,我個(gè)人比較喜歡的是用xpath定位,當(dāng)然,最靈活也是最強(qiáng)大的定位方式就是css,它也是比較難掌握的一種方式。關(guān)于xpath和css定位方式的詳細(xì)介紹,可以

參考

selenium 元素定位。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Python實(shí)現(xiàn)簡單的爬蟲框架

    使用Python實(shí)現(xiàn)簡單的爬蟲框架

    爬蟲是一種自動(dòng)獲取網(wǎng)頁內(nèi)容的程序,它可以幫助我們從網(wǎng)絡(luò)上快速收集大量信息。下面我們將學(xué)習(xí)如何使用 Python 編寫一個(gè)簡單的爬蟲框架,感興趣的可以了解一下
    2023-05-05
  • Python動(dòng)刷新12306火車票的代碼(附源碼)

    Python動(dòng)刷新12306火車票的代碼(附源碼)

    這篇文章主要介紹了Python動(dòng)刷新12306火車票的完整代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2018-01-01
  • Python 面向?qū)ο缶幊痰娜筇匦灾^承

    Python 面向?qū)ο缶幊痰娜筇匦灾^承

    繼承也是面向?qū)ο缶幊倘筇匦灾唬酒恼挛覀兙蛠韺W(xué)習(xí)Python中繼承的用處、使用場景及用與不用的區(qū)別,感興趣的朋友一起來閱讀下面文章吧
    2021-09-09
  • OpenCV-Python使用分水嶺算法實(shí)現(xiàn)圖像的分割與提取

    OpenCV-Python使用分水嶺算法實(shí)現(xiàn)圖像的分割與提取

    在圖像的處理過程中,經(jīng)常需要從圖像中將前景對象作為目標(biāo)圖像分割或者提取出來。本文就介紹了使用分水嶺算法實(shí)現(xiàn)圖像的分割與提取,感興趣的可以了解一下
    2021-06-06
  • Python中裝飾器的一個(gè)妙用

    Python中裝飾器的一個(gè)妙用

    這篇文章主要介紹了Python中裝飾器的一個(gè)妙用,本文是在寫一個(gè)爬蟲程序時(shí)總結(jié)而來,實(shí)現(xiàn)定義一個(gè)裝飾器,如果之前取到數(shù)據(jù),就直接取cache的數(shù)據(jù),如果之前沒有取到,那么就從網(wǎng)站拉取,并且存入cache中,需要的朋友可以參考下
    2015-02-02
  • Python如何實(shí)現(xiàn)后端自定義認(rèn)證并實(shí)現(xiàn)多條件登陸

    Python如何實(shí)現(xiàn)后端自定義認(rèn)證并實(shí)現(xiàn)多條件登陸

    這篇文章主要介紹了Python如何實(shí)現(xiàn)后端自定義認(rèn)證并實(shí)現(xiàn)多條件登陸,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python實(shí)現(xiàn)8個(gè)概率分布公式的方法詳解

    Python實(shí)現(xiàn)8個(gè)概率分布公式的方法詳解

    在本文中,我們將介紹一些常見的分布(均勻分布、高斯分布、對數(shù)正態(tài)分布等)并通過Python代碼進(jìn)行可視化以直觀地顯示它們,感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • python里將list中元素依次向前移動(dòng)一位

    python里將list中元素依次向前移動(dòng)一位

    這篇文章主要介紹了python里將list中元素依次向前移動(dòng)一位,以及使用racket 5.2.1實(shí)現(xiàn)此功能的代碼,希望對大家有所幫助
    2014-09-09
  • python中如何對多變量連續(xù)賦值

    python中如何對多變量連續(xù)賦值

    這篇文章主要介紹了python中如何對多變量連續(xù)賦值的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • python?open讀取文件內(nèi)容時(shí)的mode模式解析

    python?open讀取文件內(nèi)容時(shí)的mode模式解析

    這篇文章主要介紹了python?open讀取文件內(nèi)容時(shí)的mode模式解析,Python可以使用open函數(shù)來實(shí)現(xiàn)文件的打開,關(guān)閉,讀寫操作,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05

最新評論

松溪县| 本溪市| 铁力市| 钦州市| 铜梁县| 龙川县| 平凉市| 德令哈市| 阿城市| 荔波县| 宝鸡市| 三河市| 柳林县| 罗平县| 盐源县| 江山市| 汾西县| 色达县| 衡南县| 宝山区| 宝鸡市| 安图县| 丹江口市| 高州市| 丹阳市| 枣强县| 花垣县| 新宾| 瓮安县| 珲春市| 泊头市| 炉霍县| 南昌县| 广河县| 彭州市| 贺兰县| 锡林浩特市| 漳浦县| 大方县| 湟中县| 舒城县|