selenium3+python自動化5-學習find_elements總結


一、前言

之前學過元素的8中定位方式,都是find_element_by_定位方法,定位的元素返回都是一個值,定位的方法同樣適用於find_elemnts,不同的是:這種定位方式返回的值是一個list列表,可以通過索引值的方式,輸出具體的元素。書寫方式find_elements_by_定位方法。

二、練習內容及目標

1.練習的內容

百度搜索框中輸入要搜索的值,本例子中要搜索的值是“python”,點擊搜索后,會跳出很多鏈接,隨機點擊其中一個鏈接,進入鏈接頁面。

2.目標

  • 熟悉find_element定位方法
  • 掌握find_elements定位方法
  • 比較兩種方式的不同
  • 隨機函數的使用,比如random.randint(a,b)
  • 獲取元素的屬性值,get_attribute()方法

3.處理方式

  • 定位搜索框,傳要搜索的值
  • 點擊搜索,或者直接submit(),帶出很多鏈接
  • 尋找鏈接的規律
  • 根據規律,定位所有鏈接元素
  • 設置隨機函數,將隨機數作為鏈接元素的索引值,可以直接對定位的元素進行點擊操作,這樣到此為止,想用另一個辦法就繼續往下。
  • 鏈接中包含多個屬性,但是只要其中的url,獲取url
  • 點擊url地址,或者直接用driver.get(url)方式打開鏈接

三、實戰

1.定位搜索結果

 

 

 

(1)搜索框中輸入“python”,點擊搜索后,查看頁面元素,可以發現這些元素都有共同點

(2)父元素都是<h3 class='t iCrNlJ OpdTNs'>,子標簽都一樣都是a

(3)這些元素可以用css定位

from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.implicitly_wait(10)
#定位搜索框傳值
driver.find_element_by_id("kw").send_keys("python")
#提交搜索值 driver.find_element_by_id(
"kw").submit() sleep(1)
#搜索結果定位 a
=driver.find_elements_by_css_selector('h3.t>a') print(type(a),len(a))#查看元素的類型及從長度 driver.quit()

2.隨機函數

從上面代碼返回的結果可以看出a是一個列表,那么這么多元素中隨機指定一個,便用到隨機函數,random.randint(0,9)產生0~9的隨機整數

#隨機函數
import random
b=random.randint(0,9)
print(b)

3.隨機函數作為列表的索引值,對此元素進行操作

1,2步分別產生一個列表和一個隨機數,隨機數作為列表的索引值,這樣可以輸出一個隨機元素,可以直接點擊此元素,也可以使用get_attribute()方法獲取該元素的鏈接地址,根據截圖可以看出獲取href值就能得到url

from selenium import webdriver
from time import sleep
import random
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.implicitly_wait(10)
driver.find_element_by_id("kw").send_keys("python")
driver.find_element_by_id("kw").submit()
#driver.find_element_by_id("su").click()#點擊“百度一下”按鈕
sleep(1)
a=driver.find_elements_by_css_selector('h3.t>a')
#遍歷所有元素的屬性
# for i in a:
#     print(i.get_attribute('href'))#get_attribute()獲取屬性的值
#     print(i.get_attribute('class'))
#     print(i.get_attribute('text'))
b=random.randint(0,9)
a[b].click()#此方法是直接點擊元素
#url=a[b].get_attribute('href')
#driver.get(url)#get()方法打開url,接口測試內容
sleep(2)
driver.quit()

上面的代碼中,使用submit()就是類似於回車鍵,用到get()方法,打開網址,屬於接口測試內容,真正模擬手工操作,需用到click()

參考博客:https://www.cnblogs.com/yoyoketang/p/6128599.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM