2.8 定位一組元素elements

前言    
前面的幾篇都是講如何定位一個元素,有時候一個頁面上有多個物件需要操作,如果一個個去定位的話,比較繁瑣,這時候就可以定位一組物件。
webdriver 提供了定位一組元素的方法,跟前面八種定位方式其實一樣,只是前面是單數,這裡是複數形式:find_elements

本篇拿百度搜索作為案例,從搜尋結果中隨機選擇一條搜尋結果,然後點選檢視。

一、定位搜尋結果
    1.在百度搜索框輸入關鍵字“測試部落”後,用firebug檢視頁面元素,可以看到這些搜尋結果有共同的屬性。

2.從搜尋的結果可以看到,他們的父元素一樣:<h3 class="t">
    3.標籤都一樣,且target屬性也一樣:<a target="_blank" />
    4.於是這裡可以用css定位(當然用xpath也是可以的)

二、確認定位結果
    1.前面的定位策略只是一種猜想,並不一定真正獲取到自己想要的物件的,也行會定位到一些不想要的物件。
    2.於是可以獲取物件的屬性,來驗證下是不是定位準確了。這裡可以獲取href屬性,打印出url地址。

三、隨機函式
    1.搜尋結果有10條,從這10條中隨機取一個就ok了
    2.先匯入隨機函式:import random
    3.設定隨機值範圍為0~9:a=random.randint(0~9)

四、隨機開啟url
    1.從返回結果中隨機取一個url地址
    2.通過get方法打卡url
    3.其實這種方式是介面測試了,不屬於UI自動化,這裡只是開闊下思維,不建議用這種方法

五、通過click點選開啟
    1.前面那種方法,是直接訪問url地址,算是介面測試的範疇了,真正模擬使用者點選行為,得用click的方法

# coding:utf-8
from selenium import webdriver
import random
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.implicitly_wait(10)
driver.find_element_by_id("kw").send_keys(u"測試部落")
driver.find_element_by_id("kw").submit()
s = driver.find_elements_by_css_selector("h3.t>a")
# 設定隨機值
t = random.randint(0, 9)
# 隨機取一個結果點選滑鼠
s[t].click()

不知道有小夥伴有沒注意一個細節,前面在搜尋框輸入關鍵字後,我並沒有去點選搜尋按鈕,而是用的submit的方法,submit相當於回車鍵。
具體的操作物件方法,下篇詳細介紹。本篇主要學會定位一組物件,然後隨機操作其中的一個。