selenium2与python自动化2-元素定位
? ? ? Firefox瀏覽器作為selenium的默認(rèn)瀏覽器不是沒有道理的,其強(qiáng)大的元素定位能力,能快速有助于開發(fā)人員對(duì)于關(guān)鍵字的獲取。而自動(dòng)化需要掌握的關(guān)鍵步驟有:獲取元素,操作元素,獲取返回結(jié)果,斷言(判斷返回結(jié)果是否與期望結(jié)果一致),生成測(cè)試報(bào)告。
一、準(zhǔn)備環(huán)境
二、查看頁(yè)面元素
三、元素定位
從上圖中可以得到相應(yīng)搜索單元的屬性,利用單元中元素的屬性進(jìn)行定位
可以看到屬性 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)行查看呢
總結(jié)
以上是生活随笔為你收集整理的selenium2与python自动化2-元素定位的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: selenium2与python自动化1
- 下一篇: selenium2与python自动化4