前面的几篇都是讲如何定位一个元素,有时候一个页面上有多个对象需要操作,如果一个个去定位的话,比较繁琐,这时候就可以定位一组对象。
webdriver 提供了定位一组元素的方法,跟前面八种定位方式一样,只是前面是单数,这里是复数形式:find_elements。
一、定位元素
1)查看百度搜索框页面元素
2)可以使用xpath进行定位。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
eles = driver.find_elements('xpath', '//*[@id="s-top-left"]/a')
二、确认定位结果
前面的定位策略只是一种猜想,并不一定真正获取到自己想要的对象,也许会定位到一些不想要的对象。于是可以获取对象的属性,来验证是否定位准确。这里可以获取href属性,打印出url地址。
for i in eles:
print(i.get_attribute('href'))
三、随机函数
搜索结果有8条,从这8条中随机取一个url。
import random
idx = random.randint(0, 7)
print(idx)
四、随机打开url
根据生成的随机数选取一个url地址,通过driver.get(url)方式打开。
from selenium import webdriver
import random
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
eles = driver.find_elements('xpath', '//*[@id="s-top-left"]/a')
idx = random.randint(0, 9)
driver.get(eles[idx].get_attribute("href"))
driver.quit()