赞
踩
查看元素的属性值,通过是在浏览器窗口按下F12,打开开发者工具;
点击工具栏左侧箭头,鼠标移入界面选元素,查看元素属性;
再按Ctrl+f,在输入框输入定位方法,验证是否正确定位到。
示例:
<input type="text" name="uname" id="username" class="px" />
通过ID属性值定位,语法:
driver.find_element(By.ID,'username')
driver.find_element("id",'username') #By.ID等价于"id"
示例:
<input type="text" name="uname" id="username" class="px" />
通过name属性值定位,语法:
driver.find_element(By.NAME,"uname")
driver.find_element("name","uname")
示例:
<input type="text" name="uname" id="username" class="px" />
通过name属性值定位,语法:
driver.find_element(By.CLASS_NAME,'px')
driver.find_element("class name","px")
注意:class多个值时,只能写一个
html代码:
<div id='div1'>
<p>这是一个段落1</p>
<p>这是一个段落2</p>
</div>
通过tag name定位,语法:
driver.find_element(By.TAG_NAME, 'p')
driver.find_element("tag name", "P"
注意:find_element(定位1个元素)如果定位到多个,操作的是第一个!
通过链接文本定位是针对a标签
示例html代码:
<a href="https://www.baidu.com">百度一下,你就知道</a>
通过link text定位,语法:
driver.find_element(By.LINK_TEXT, '百度一下,你就知道')
driver.find_element("link text","百度一下,你就知道")
有时候链接文本太长,我们可以使用如下方法,语法
driver.find_element(By.PARTIAL_LINK_TEXT,'百度')
driver.find_element("partial link text","百度")
<html>
<head>
<meta charset="utf-8">
<title>第二天</title>
</head>
<body>
<div id="div1">
用户名:<input type="text" name="uname" id="username" class="px" />
密码:<input type="text" name="pword" id="password" class="pv vm" />
<br>
<a href="https://www.baidu.com">百度一下,你就知道</a>
<p>这是一个段落1</p>
</div>
</body>
</html>
7.1.1 绝对路径
driver.find_element(By.XPATH,'html/body/div/input')
driver.find_element('xpath','html/body/div/input')
7.1.2 相对路径
"""
//input 所有input标签
//p[1] 父节点下的第一个p标签
//* 定位所有的标签(更多是配合属性法来定位)
"""
driver.find_element('xpath','//input')
语法:
示例:
driver.find_element(By.XPATH,"//input[@id='username']")
常用的3个:
driver.find_element("xpath", "//a[contains(text(),'百度')]")
语法:
//input[@name=‘uname’ and @class=‘px’]
//input[@name=‘uname’ or @ class=‘pv vm’] # 自动化中极少用
有以下html代码:
<html> <head> <meta charset="utf-8"> <title>第二天</title> </head> <body> <div id="div1"> 用户名:<input type="text" name="uname" id="username" class="px" /> 密码:<input type="text" name="pword" id="password" class="pv vm" /> <br> <a href="https://www.baidu.com">百度一下,你就知道</a> <p>这是一个段落1</p> <p>这是一个段落2</p> </div> </body> </html>
示例:p 所有p标签
driver.find_element(By.CSS_SELECTOR,'p')
示例:#username id属性的值是username
driver.find_element("css selector",'#username')
示例:.pv.vm class=pv vm’
driver.find_element("css selector",'.pv.vm')
语法:[属性名=‘属性值’]
示例1:[id=‘username’] id属性值是username
示例2:input[id^=‘usernam’] input标签的id属性开头是usernam
示例3:input[id*=‘sernam’] input标签的id属性值包含sernam
示例4:input[id$=‘ername’] input标签的id属性值结尾是ername
driver.find_element(By.CSS_SELECTOR,"[id='username")
driver.find_element(By.CSS_SELECTOR,'input[id^="usernam"]')
driver.find_element(By.CSS_SELECTOR,'input[id*="ernam"]')
driver.find_element(By.CSS_SELECTOR,'input[id$="ername"]')
子代选择器 示例:html>body html下的body
后代选择器 示例:html div html下的div
二弟选择器 示例:head+body head紧挨着的body
弟弟 示例:div~p 跟div同级,在div之后的弟弟
:first-child 第一个元素 body>:first-child body下的第一个标签
:last-child 最后一个元素 body>:last-child body下的最后一个标签
:nth-child(n) 第几个元素 body>div:nth-child(3) body下的第三个标签是div
:nth-last-child 倒数第几个元素 body>div:nth-last-child(4) body下的倒数第四个标签是div
:only-child 唯一元素 input:only-child 每个节点下的唯一一个input标签
driver.find_element(By.CSS_SELECTOR,'div>:first-child') # 定位到div下第一个标签,即用户名输入框
driver.find_element(By.CSS_SELECTOR,'div>:last-child') # 定位到div下最后一个标签 ,即 <p>这是一个段落2</p>
driver.find_element(By.CSS_SELECTOR,'div>:nth-child(2)') # div下第二个标签,即密码输入框
注:xpath是万能的,但是xpath是慢的,css号称速度最快,推荐使用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。