selenium应用之“定位一组元素”
2019-03-14 本文已影响0人
rr1990
一、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列表类型,列表中每个值为WebElement类;
elements主要用于当一个页面有多个属性相同的元素时,可通过获取所有元素,再通过取值方式获取某个所需的元素。
1. element与elements区别
# 获取百度网址的输入框
<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))
"""结果
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对百度网页上的任意一个链接随机操作
<div id="u1">
<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>
<a href="https://www.hao123.com" name="tj_trhao123" class="mnav">hao123</a>
<a href="http://map.baidu.com" name="tj_trmap" class="mnav">地图</a>
<a href="http://v.baidu.com" 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") # 获取所有链接数据
length = len(mnav_data)
choice = random.randint(0, length-1) # 随机值
mnav_data[choice].click()
time.sleep(2)
driver.quit()