selenium元素定位

本文详细介绍了Selenium WebDriver提供的强大元素定位方法,包括单个对象、多个对象及层级定位技巧。涵盖By.id、By.name等定位方式,以及findElements()方法使用示例,适合Web自动化测试学习。

参考网址:https://blog.youkuaiyun.com/qi_ling/article/details/84166144?utm_source=distribute.pc_relevant.none-task


xpath教程:https://www.runoob.com/xpath/xpath-syntax.html


selenium-webdriver提供了强大的元素定位方法,支持以下三种方法。

单个对象的定位方法

多个对象的定位方法

层级定位


==============================================================================


定位单个元素
在定位单个元素时,selenium-webdriver提示了如下一些方法对元素进行定位。

By.id(id)

By.name(name)

By.className(className))

By.tagName(name)

By.linkText(linkText)

By.partialLinkText(linkText)

By.xpath(xpathExpression)

By.cssSelector(selector)

=======================================================================================

定位多个元素


findElements()方法可以返回一个符合条件的元素List组

//定位到所有<input>标签的元素,然后输出他们的id

List<WebElement> element = driver.findElements(By.tagName("input"));

for (WebElement e : element)

{
System.out.println(e.getAttribute("id"));
//返回页面上所有input对象的id
}

==========================================================================================

层级定位


层级定位的思想是先定位父元素,然后再从父元素中精确定位出其我们需要选取的子元素。

层级定位一般的应用场景是无法直接定位到需要选取的元素,但是其父元素比较容易定位,

通过定位父元素再遍历其子元素选择需要的目标元素,或者需要定位某个元素下所有的子元素。


//定位class为"login"的div,然后再取得它下面的所有label,并打印出他们的值


WebElement element = driver.findElement(By.className("login"));

List<WebElement> el = element.findElements(By.tagName("label"));

for(WebElement e : el)
{
System.out.println(e.getText());
}

----------------------------------------------------------------------------------------

//层级定位


WebElement element=driver.findElement(By.className("nav-item"));//层级定位第一步


List<WebElement> elements=element.findElements(By.tagName("li"));//层级定位第二步


elements.get(3).click();//层级定位第三步


----------------------------------------------------------------------------------------

from selenium import webdriver
from time import sleep

driver = webdriver.Firefox() # 指定和打开浏览器
url1='http://www.baidu.com'
driver.get(url1) #打开第一个网址 #也可以写成:driver.get('http://www.baidu.com')
sleep(5)

driver.find_element_by_id('kw').send_keys('中国')
driver.find_element_by_id('su').click()

sleep(5)
print("123")
sleep(5)

x = driver.find_element_by_class_name("FYB_RD").find_elements_by_tag_name("a")[0]

print(x.text)


y = driver.find_element_by_class_name("FYB_RD").find_elements_by_tag_name("a")[1]

print(y.text)

g = driver.find_element_by_class_name("FYB_RD").find_elements_by_tag_name("a")[2]

print(g.text)

d = driver.find_element_by_class_name("FYB_RD").find_elements_by_tag_name("a")

for i in d:
print(i.text)


driver.quit()

执行结果:

123

换一换

小区出入证大赏
李兰迪做蛋糕
换一换

小区出入证大赏
李兰迪做蛋糕
陈冠希女儿自画像
东马不退报名费
尼日尔踩踏事故
孙兴慜右臂骨折
永昌与莫雷洛解约
2020年开学第一课
巴基斯坦毒气泄漏
宁波出台复工20条


查看更多>>

=================================================================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值