日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

selenium2与python自动化2-元素定位

發(fā)布時(shí)間:2025/3/20 python 9 豆豆
生活随笔 收集整理的這篇文章主要介紹了 selenium2与python自动化2-元素定位 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? Firefox瀏覽器作為selenium的默認(rèn)瀏覽器不是沒有道理的,其強(qiáng)大的元素定位能力,能快速有助于開發(fā)人員對(duì)于關(guān)鍵字的獲取。而自動(dòng)化需要掌握的關(guān)鍵步驟有:獲取元素,操作元素,獲取返回結(jié)果,斷言(判斷返回結(jié)果是否與期望結(jié)果一致),生成測(cè)試報(bào)告。

一、準(zhǔn)備環(huán)境

  • 安裝Firebug和FirePath,在瀏覽器設(shè)置/添加組件/搜索插件名稱
  • 安裝完成瀏覽器右上角有個(gè)爬蟲的圖標(biāo)
  • 二、查看頁(yè)面元素

  • 點(diǎn)擊瀏覽器右上角爬蟲圖標(biāo)
  • 點(diǎn)擊左下角箭頭標(biāo)識(shí)
  • 將箭頭標(biāo)識(shí)移動(dòng)到百度搜索框,輸入框高亮
  • 下方紅色區(qū)域就是單位到輸入框的屬性
  • 三、元素定位

    從上圖中可以得到相應(yīng)搜索單元的屬性,利用單元中元素的屬性進(jìn)行定位


  • find_element_by_id()
  • 可以看到屬性 id ,id ="search-key",通過(guò)id屬性定位到這個(gè)元素,定位到搜索框后,使用send_keys()

    #coding:utf-8 from selenium import webdriverdriver = webdriver.Firefox() driver.get("https://www.baidu.com/")#通過(guò)id定位搜索框,并輸出selenium driver.find_element_by_id("kw").send_keys("selenium") driver.find_element_by_id("su").submit()driver.implicitly_wait(10) driver.quit()

    ? ? ?2. find_element_by_name()

    可以看到屬性name,name="q",通過(guò)name屬性定位到這個(gè)元素

    driver.find_element_by_name("q").send_keys("selenium")

    但是發(fā)現(xiàn)運(yùn)行結(jié)果存在問(wèn)題,因?yàn)閚ame屬性不是唯一的,因此無(wú)法通過(guò)name屬性定位到搜索框

    ? ? ?3. find_element_by_class_name()

    可以看到屬性class="engine-key",通過(guò)class屬性定位到這個(gè)元素

    driver.find_element_by_class_name("engine-key").send_keys("selenium")

    出現(xiàn)的問(wèn)題同2中一樣,以為class_name屬性不具有唯一性,不能直接定位

    ? ? ?4. find_element_by_tag_name()

    每個(gè)元素都有一個(gè)tag標(biāo)簽,如搜索框的tag標(biāo)簽是最前面的input屬性,從上圖也不難發(fā)現(xiàn),一個(gè)頁(yè)面中有很多tag標(biāo)簽,因此一般不用tag標(biāo)簽進(jìn)行定位

    driver.find_element_by_tag_name("input").send_keys("selenium")

    ? ? ?5. find_element_by_link_text()

    定位百度首頁(yè)上的hao123


    有一個(gè)href="http://www.hao123.com"的元素,這是一種超鏈接的表示方法,對(duì)于這種元素

    #coding:utf-8 from selenium import webdriverdriver = webdriver.Firefox() driver.get("https://www.baidu.com/")#通過(guò)超鏈接定位搜索框,并輸出selenium driver.find_element_by_link_text("hao123").click()

    有時(shí)間,超鏈接可能很長(zhǎng),此時(shí)可以是用模糊定位,只需要輸出部分字符串就可以了,可以使用?

    find_element_by_partial_link_text() 進(jìn)行定位,如果要定位hao123,可以使用o123,但要確保字符在界面中的唯一性

    driver.find_element_by_partial_link_text("o123").click()

    ? ? ? 6. find_element_by_xpath()

    從上面可以看到,在元素定位的時(shí)候,難免有重復(fù)的,不能保證唯一性,因此除了id,name,tag,class,超鏈接等屬性定位方法,作為最重要的元素定位方法之一的xpath方法進(jìn)行定位,xpath是一種路徑語(yǔ)言


    這樣就得到了搜索框的xpath路徑,復(fù)制XPath中的路徑進(jìn)行搜索。

    #coding:utf-8 from selenium import webdriver import time#打開火狐瀏覽器 driver = webdriver.Firefox() driver.maximize_window() #打開百度 driver.get("https://www.baidu.com/") #頁(yè)面加載需要幾秒鐘的時(shí)間 time.sleep(2) driver.find_element_by_xpath(".//*[@id='kw']").send_keys("python") driver.find_element_by_xpath(".//*[@id='su']").click() time.sleep(3)driver.quit()

    ? ? ?7. find_element_by_css_selector()

    css是另一種語(yǔ)法,比xpath更簡(jiǎn)潔,那如何進(jìn)行查看呢


    #coding:utf-8 from selenium import webdriver import time#打開火狐瀏覽器 driver = webdriver.Firefox() driver.maximize_window() #打開百度 driver.get("https://www.baidu.com/") #頁(yè)面加載需要幾秒鐘的時(shí)間 time.sleep(2) driver.find_element_by_css_selector("#kw").send_keys("python") driver.find_element_by_css_selector("#su").click() time.sleep(3)driver.quit()

    總結(jié)

    以上是生活随笔為你收集整理的selenium2与python自动化2-元素定位的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。