selenium 定位一组元素

前言
前面的几篇都是讲如何定位一个元素,有时候一个页面上有多个对象需要操作,如果一个个
去定位的话,比较繁琐,这时候就可以定位一组对象。
webdriver 提供了定位一组元素的方法,跟前面八种定位方式其实一样,只是前面是单数,
这里是复数形式:find_elements
本篇拿百度搜索作为案例,从搜索结果中随机选择一条搜索结果,然后点击查看。

一、定位搜索结果

1.在百度搜索框输入关键字“MTbaby”后,用 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 time
from selenium.webdriver.common.action_chains import ActionChains
import random
driver = webdriver.Chrome()
driver.get('http://www.baidu.com/')
driver.implicitly_wait(10)
driver.find_element_by_id('kw').send_keys('MTbaby')
driver.find_element_by_id('kw').submit()
s = driver.find_elements_by_css_selector("h3.t>a")

#设置随机值
t = random.randint(0,9)
#随机取一个结果点击
a = s[t].click()

不知道有小伙伴有没注意一个细节,前面在搜索框输入关键字后,我并没有去点击搜索按钮,而是用的 submit 的方法,submit 相当于回车键。

具体的操作对象方法,下篇详细介绍。本篇主要学会定位一组对象,然后随机操作其中的一个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值