selenium2与python自动化2-元素定位
? ? ? Firefox瀏覽器作為selenium的默認瀏覽器不是沒有道理的,其強大的元素定位能力,能快速有助于開發人員對于關鍵字的獲取。而自動化需要掌握的關鍵步驟有:獲取元素,操作元素,獲取返回結果,斷言(判斷返回結果是否與期望結果一致),生成測試報告。
一、準備環境
二、查看頁面元素
三、元素定位
從上圖中可以得到相應搜索單元的屬性,利用單元中元素的屬性進行定位
可以看到屬性 id ,id ="search-key",通過id屬性定位到這個元素,定位到搜索框后,使用send_keys()
#coding:utf-8 from selenium import webdriverdriver = webdriver.Firefox() driver.get("https://www.baidu.com/")#通過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",通過name屬性定位到這個元素
driver.find_element_by_name("q").send_keys("selenium")但是發現運行結果存在問題,因為name屬性不是唯一的,因此無法通過name屬性定位到搜索框
? ? ?3. find_element_by_class_name()
可以看到屬性class="engine-key",通過class屬性定位到這個元素
driver.find_element_by_class_name("engine-key").send_keys("selenium")出現的問題同2中一樣,以為class_name屬性不具有唯一性,不能直接定位
? ? ?4. find_element_by_tag_name()
每個元素都有一個tag標簽,如搜索框的tag標簽是最前面的input屬性,從上圖也不難發現,一個頁面中有很多tag標簽,因此一般不用tag標簽進行定位
driver.find_element_by_tag_name("input").send_keys("selenium")? ? ?5. find_element_by_link_text()
定位百度首頁上的hao123
有一個href="http://www.hao123.com"的元素,這是一種超鏈接的表示方法,對于這種元素
#coding:utf-8 from selenium import webdriverdriver = webdriver.Firefox() driver.get("https://www.baidu.com/")#通過超鏈接定位搜索框,并輸出selenium driver.find_element_by_link_text("hao123").click()有時間,超鏈接可能很長,此時可以是用模糊定位,只需要輸出部分字符串就可以了,可以使用?
find_element_by_partial_link_text() 進行定位,如果要定位hao123,可以使用o123,但要確保字符在界面中的唯一性
driver.find_element_by_partial_link_text("o123").click()? ? ? 6. find_element_by_xpath()
從上面可以看到,在元素定位的時候,難免有重復的,不能保證唯一性,因此除了id,name,tag,class,超鏈接等屬性定位方法,作為最重要的元素定位方法之一的xpath方法進行定位,xpath是一種路徑語言
這樣就得到了搜索框的xpath路徑,復制XPath中的路徑進行搜索。
#coding:utf-8 from selenium import webdriver import time#打開火狐瀏覽器 driver = webdriver.Firefox() driver.maximize_window() #打開百度 driver.get("https://www.baidu.com/") #頁面加載需要幾秒鐘的時間 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是另一種語法,比xpath更簡潔,那如何進行查看呢
總結
以上是生活随笔為你收集整理的selenium2与python自动化2-元素定位的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: selenium2与python自动化1
- 下一篇: selenium2与python自动化4