一、selenium定位一組元素
- find_elements_by_id(id_)
獲取一組相同id的元素
- find_elements_by_name(name)
獲取一組相同name的元素
- find_elements_by_class_name(name)
獲取一組相同class的元素
- find_elements_by_link_text(text)
獲取一組相同link_text的元素
- find_elements_by_partial_link_text(link_text)
獲取一組相同partial_link_text的元素
- find_elements_by_tag_name(name)
獲取一組相同tag的元素
- find_elements_by_xpath(xpath)
獲取一組相同xpath的元素
- find_elements_by_css_selector(css_selector)
獲取一組相同css的元素
二蒂阱、elements的使用
- 定位element狂塘,返回值為WebElement類荞胡;
- 定位elements,返回值為list列表類型廊营,列表中每個(gè)值為WebElement類;
elements主要用于當(dāng)一個(gè)頁面有多個(gè)屬性相同的元素時(shí)呐伞,可通過獲取所有元素伶氢,再通過取值方式獲取某個(gè)所需的元素瘪吏。
1. element與elements區(qū)別
# 獲取百度網(wǎng)址的輸入框
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
# 使用element獲取元素
element = driver.find_element_by_id(id_="kw")
print("element:", element)
print(type(element))
# 使用elements獲取元素
elements = driver.find_elements_by_id(id_="kw")
print("elements:", elements)
print(type(elements))
"""結(jié)果
element: <selenium.webdriver.remote.webelement.WebElement (session="0ed710a56611b1a2f9b4de9475de9908", element="0.8557849382364942-1")>
<class 'selenium.webdriver.remote.webelement.WebElement'>
elements: [<selenium.webdriver.remote.webelement.WebElement (session="0ed710a56611b1a2f9b4de9475de9908", element="0.8557849382364942-1")>]
<class 'list'>
"""
2. elements對(duì)百度網(wǎng)頁上的任意一個(gè)鏈接隨機(jī)操作
<div id="u1">
<a name="tj_trnews" class="mnav">新聞</a>
<a name="tj_trhao123" class="mnav">hao123</a>
<a name="tj_trmap" class="mnav">地圖</a>
<a name="tj_trvideo" class="mnav">視頻</a>
...
</div>
import random
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
mnav_data = driver.find_elements_by_class_name("mnav") # 獲取所有鏈接數(shù)據(jù)
length = len(mnav_data)
choice = random.randint(0, length-1) # 隨機(jī)值
mnav_data[choice].click()
time.sleep(2)
driver.quit()
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者