Selenium元素定位

Selenium元素定位

8种定位方式
        1. id
        2. name
        3. class_name(使用元素的class属性定位)
        4. tag_name(标签名称 <标签名 .../>)
        5. link_text(定位超连接 a标签)
        6. partial_link_text(定位超链接 a标签 模糊)
        7. xpath(基于元素路径)
        8. css(元素选择器)

一、id定位方法 :通过id属性定位到搜索框

        driver.find_element("id", "value")
# 1.导包
from time import sleep

from selenium import webdriver

# 2.获取浏览器对象
driver = webdriver.Chrome()

# 3.打开连接
url = "C:\\Users\\Administrator\\Desktop\\web\\注册A.html"
driver.get(url)

# 查找用户名元素        id="userA"
username = driver.find_element("id","userA")
# 查找密码元素
password = driver.find_element("id",'passwordA')
# 用户输入admin
username.send_keys("admin")
# 密码输入123456
password.send_keys("123456")

# 4.睡眠3秒
sleep(3)
# 5.关闭
driver.quit()

二、name定位方法   :通过 name属性定位到搜索框
        driver.find_element("name","value")
# 1.导包
from time import sleep

from selenium import webdriver

# 2.获取浏览器对象
driver = webdriver.Chrome()
# 3.打开url
url = "C:\\Users\\Administrator\\Desktop\\web\\注册A.html"
driver.get(url)

# 4.查找元素 并输入值    name="userA"
driver.find_element("name", "userA").send_keys("admin")

# 5.暂停3秒
sleep(3)
# 6.关闭
driver.quit()

三、class_name定位方法 :通过class属性定位到搜索框

先导包from selenium.webdriver.common.by import By

        driver.find_element(By.CLASS_NAME,"value")

# 1.导包
from time import sleep

from selenium import  webdriver

from selenium.webdriver.common.by import By

# 2.获取浏览器驱动对象
driver=webdriver.Chrome()

# 3.打开浏览器
url="C:\\Users\\Administrator\\Desktop\\web\\注册A.html"
driver.get(url)
                     
# 4.class="telA"  通过class_name定位电话  并输入电话号码   
driver.find_element(By.CLASS_NAME,"telA").send_keys("13555555555")

# 5.暂停3秒
sleep(3)

# 6.关闭
driver,quit()

四、tag_name定位方法 :通过 标签名称 定位到搜索框

        如果存在多个相同标签,则返回符合条件的第一个标签

# 1.导包
from time import sleep

from selenium import webdriver
from selenium.webdriver.common.by import By

# 2.获取浏览器驱动对象
driver = webdriver.Chrome()

# 3.打开浏览器
url = "C:\\Users\\Administrator\\Desktop\\web\\注册A.html"
driver.get(url)

# 4.通过tag_name定位 用户名  并输入admin
driver.find_element(By.TAG_NAME,"input").send_keys("admin")
# 5.暂停3秒
sleep(3)

# 6.关闭
driver.quit()

五、link_text定位方法 :定位超链接的全部文本

        driver.find_element(By.LINK_TEXT,"value")
# 1.导包
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By

# 2.获取浏览器驱动对象
driver = webdriver.Chrome()

# 3.打开浏览器
url = "C:\\Users\\Administrator\\Desktop\\web\\注册A.html"
driver.get(url)

# 4.通过link_text定位, 点击(访问 新浪 网站)
driver.find_element(By.LINK_TEXT,"访问 新浪 网站").click()

# 5.暂停3秒
sleep(3)

# 6.关闭
driver.quit()

六、partial_link_text定位方法 :模糊匹配定位文本链接

        如果有多个值默认返回第一个

# 1.导包
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By

# 2.获取浏览器驱动对象
driver = webdriver.Chrome()

# 3.打开浏览器
url = "C:\\Users\\Administrator\\Desktop\\web\\注册A.html"
driver.get(url)

# 4.通过partial_link_text定位, 点击(访问 新浪 网站)
driver.find_element(By.PARTIAL_LINK_TEXT,"访问").click()

# 5.暂停3秒
sleep(3)

# 6.关闭
driver.quit()

七、XPath 定位: 要定位的元素没有id name class属性,通过 name class tag_name 无法定位到唯一的元素。
XPath 定位 方式
1. 路径 - 定位
2. 利用元素属性 - 定位
3. 属性与逻辑结合 - 定位
4. 层级与属性结合 - 定位

1.路径定位(绝对路径、相对路径)        

绝对路径:从最外层元素到指定元素之间所有经过元素层级的路径
①. 绝对路径以 /html 根节点开始,使用 / 来分隔元素层级;
        如:/html/body/form/div/fieldset/p[2]/input
Selenium元素定位_第1张图片

相对路径:匹配任意层级的元素,不限制元素的位置
①.相对路径以// 开始
②. 格式://input 或者 //*

#1.导包
from selenium import  webdriver
from time import  sleep
from selenium.webdriver.common.by import By

# 2.获取浏览器驱动
driver=webdriver.Chrome()

# 3.打开浏览器
url = "C:\\Users\\Administrator\\Desktop\\web\\注册A.html"
driver.get(url)

# 4.使用xpath定位元素:相对路径输入用户名,绝对路径输入密码
driver.find_element(By.XPATH,'//input[@id="userA"]').send_keys("admin")
driver.find_element(By.XPATH,"/html/body/form/div/fieldset/p[2]/input").send_keys("123")

# 5.暂停3秒
sleep(3)

# 6.关闭
driver.quit()
2 利用元素属性:使用元素的属性信息来定位元素
格式://input[@id='passwordA '] 或者 //*[@id='passwordA ']
Selenium元素定位_第2张图片
3 属性与逻辑结合:解决元素之间个相同属性重名问题
格式://*[@id="userA" and @name="userA"]
4 层级与属性结合:如果通过元素自身的信息不方便直接定位到该元素,可以先定位到其父级元素,再找到该元素
格式: //*[@id='p1']/input
5 其他
//*[text()="xxx"]        文本内容是xxx的元素
        如:   //*[text()='注册用户']
//*[contains(@attribute,'xxx')]         属性中含有xxx的元素
        如:  //*[contains(@type,'textA')]
//*[starts-with(@attribute,'xxx')]         属性以xxx开头的元素
        如: //*[starts-with(@id,'use')]"

八、CSS定位
CSS 定位 方式
1. id选择器               
        如:#userA ( userA 为id 属性值)
2. class选择器        
        如:.telA ( 选择 class 属性值为 telA 的所有元素)
3. 元素选择器   
        例如:input ( 选择所有 input 元素
4. 属性选择器
        例如:[type="password"] ( 选择 type 属性值为 password 的元素 >)
5. 层级选择器
        例如 p[id='p1']>input ( 定位指定 p 元素下的直接子元素 input)
#1.导包
from selenium import  webdriver
from time import  sleep
from selenium.webdriver.common.by import By

# 2.获取浏览器驱动
driver=webdriver.Chrome()

# 3.打开浏览器
url = "C:\\Users\\Administrator\\Desktop\\web\\注册A.html"
driver.get(url)

# 4.使用CSS定位方式中id选择器定位用户名输入框,并输入:admin
# 使用CSS定位方式中属性选择器定位密码输入框,并输入:123
# 使用CSS定位方式中class选择器定位电话号码输入框,并输入:18600000000
# 使用CSS定位方式中元素选择器定位span标签获取文本值
# 使用CSS定位方式中的层级选择器定位email输入框,并输入:123@qq.com
driver.find_element(By.CSS_SELECTOR,'#userA').send_keys("admin")
driver.find_element(By.CSS_SELECTOR,'[type="password"]').send_keys("123")
driver.find_element(By.CSS_SELECTOR,'.telA').send_keys("18600000000")
span=driver.find_element(By.CSS_SELECTOR,'span').text
print(span)
driver.find_element(By.CSS_SELECTOR,'p>input[placeholder="电子邮箱A"]').send_keys("123@qq.com")

# 5.暂停3秒
sleep(3)

# 6.关闭
driver.quit()
6 其他
input[type^='p']        type属性以 p 字母开头的元素
input[type$='d']        type属性以 d 字母结束的元素
input[type*='w']         type属性包含 w 字母的元素

你可能感兴趣的:(测试,selenium,python)