webdriver元素定位_1.05

元素定位

元素的定位是自动化测试的核心,想要操作一个元素,首先应该识别这个元素。webdriver 提供了一系列的元素定位方法,常用的有以下几种:

 

元素名称

webderiver api

id

find_element_by_id()

name

find_element_by_name()

class name

find_element_by_class_name()

tag name

find_element_by_tag_name()

link text

find_element_by_link_text()

partial link text

find_element_by_partial_link_text

xpath

find_element_by_xpath()

css selector

find_element_by_css_selector()

 

 

元素操作方式:

方法

说明

clear

清除元素内容

send_keys

模拟按键输入

click

点击

submit

提交表单

 

案例:打开百度首页,根据元素 id ,在搜索框自动输入 seleium 关键字,然后点击搜索按钮,查看索搜页面,再根据元素 name ,搜素python

id:根据标签中属性 input id 来定位

name:根据标签中 name 来定位

 

from selenium import webdriver

from time import sleep

a = webdriver.Firefox()

a.get("http://www.baidu.com/")

#获取 输入框 id 元素

ele = a.find_element_by_id("kw")

ele.send_keys("selenium")

#定位搜素按钮的id 元素,点击搜素

#a.find_element_by_id("su").click()

sleep(2)

ele.clear()

# 获取输入框 name 元素

ee = a.find_element_by_name("wd")

ee.send_keys("python")

sleep(2)

# 点击 搜索按钮

a.find_element_by_id("su").click()

a.close()

 

元素定位 - tag name,css selector , link text

tag name:根据标签名称来定位

css selector:根据链接的css路径来定位

link text:定位就是根据超链接文字进行定位

from selenium import webdriver

from time import sleep

a = webdriver.Firefox()

a.get("https://www.taobao.com")

el = a.find_element_by_tag_name("input")

el.send_keys("羽绒服")

sleep(3)

el.clear()

#获取页面所有标签为 input 元素的

el = a.find_elements_by_tag_name("input")[0]

el.send_keys("羽绒服女")

a.find_element_by_css_selector("html.ks-gecko64.ks-gecko.ks-firefox64.ks-firefox body.taobao.s1365.s1440 div.cup.J_Cup div.top.J_Top div.top-wrap.clearfix div.tbh-search.J_Module div.search-wrap div.search-bd div.search-panel.search-hp-panel.ks-switchable-content.J_SearchPanel form#J_TSearchForm.search-panel-focused div.search-button button.btn-search.tb-bg").click()

a.back()

#进入标题导航“天猫”

a.find_element_by_link_text("天猫超市").click()

a.quit()

 

 

css selector:还有一种写法:

a.find_element_by_css_selector('input=[id=\'search\']')

或者

a.find_element_by_css_selector("#kw").send_keys("selenium 自学")

.

 

元素定位:class name , partial link text

class name:根据标签中 class 属性来定位

partial link text:定位就是根据超链接文字模糊定位

from selenium import webdriver

from time import sleep

a = webdriver.Firefox()

a.get("https://www.taobao.com")

#根据class 属性定位

a.find_element_by_class_name("search-combobox-input").send_keys("羽绒服")

a.back()

#根据 partial link text 进入天猫超市

a.find_element_by_partial_link_text("超市").click()

sleep(3)

a.quit()

 

 

元素定位:xpath

xpath定位:xpath 即为XML 路径语言,它是一种用来确定 XML 文档中某部分位置的语言。xpath 基于 XML的树状结构,提供在数据结构中找寻节点的能力

xml 路径语言:用来确定 xml 文档中某部分位置的语言

xpath 用于在 xml 文档中通过元素和属性进行导航

xpath 是一个 W3C 标准

对 xml / html 有一定的了解

 

xpath 节点类型:

元素,属性,文本,命名空间,指令处理,注释及文档

 

xpath :通过路径表达式从 xml 文档中选取节点或节点设置

表达式

结果

/xxx

选取根节点xxx

/xxx/yyy

根据绝对路径选择元素

//xxx

整个文档扫描,找到所有xxx元素

//xxx/yyy

所有父元素为xxx的yyy元素

.

选取当前节点的父元素节点

..

选取父元素地址

//xxx[@id]

选取所有xxx元素中有id属性的元素

///xxx[@id=yyy]

选取所有xxx元素id属性为yyy的元素

 

xpath 绝对与相对定位

 

<html>

<head>

it's head

<titile>selenium</title>

</head>

 

<body>

<form>

firstname

<input type="text" name="firstname">

<br />

lastname

<input type="text" name="lastname">

</form>

<p>

age

<input type="text" name="age">

</p>

</body>

</html>

 

绝对路径定位:

自己创建的 html 文件(aa.html)

from selenium import webdriver

from time import sleep

a = webdriver.Firefox()

#打开本地的 html 文件

a.get("file:///C:/Users/Administrator/Desktop/aa.html")

#选取根路径节点

ele = a.find_element_by_xpath("/html")

print(ele)

#打印页面所显示的文件内容

print(ele.text)

#获取文件的绝对路径,获取的是第一个框里(firstname)的路径

ele=a.find_element_by_xpath("/html/body/titile/form/input")

#打印html 里的type 、name 的值

print(ele.get_attribute('type'))

print(ele.get_attribute('name'))

ele.send_keys("夏天")

ele.clear()

sleep(2)

#第一个框里的绝对路径后面加标注,[1]指第一个

ele=a.find_element_by_xpath("/html/body/titile/form/input[1]")

ele.get_attribute("xiatian")

sleep(3)

ele1=a.find_element_by_xpath("/html/body/titile/form/input[2]")

ele1.get_attribute("dongtian")

#获取 age 的节点,赋值

ele2=a.find_element_by_xpath("/html/body/titile/p/input")

ele2.send_keys(20)

 

 

from selenium import webdriver

from time import sleep

a=webdriver.Firefox()

a.get("https://baidu.com")

# 利用熟悉的元素定位,定位到 input 标签中为 kw 元素

a.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")

# 定位 input 标签中 name 属性为 wd 的元素

#a.find_element_by_xpath("//input[@name='wd']").send_keys("python3")

#sleep(3)

# 定位所有标签元素中,class 属性为 s_ipt 的元素

#a.find_element_by_xpath("//*[@class='s_ipt']").send_keys("python3") # 有一个标签元素的时候用此

#sleep(3)

sleep(3)

a.quit()

 

 

xpath:通过路径表达式从 XML 文档中选取节点或节点设置

表达式

结果

//*[count(xxx)=2]

统计xxx元素个数=2的节点

//*[local-name()='xxx']

找到 tag 为 xxx 的元素

//*[starts-with(local-name(),'x')]

找到所有 tag 以 x 开头的元素

//*[contains(local-name(),'x')]

找到所有 tag 包含 x 的元素

//*[string-length(local-name())=3]

找到所有 tag 长度为 3 的元素

//xxx|//yyy

多个路径查找

 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值