1、webdriver元素定位方式
id、name、class_name--->元素属性定位
tag_name--->元素标签名称
link_text、partial_link_text--->超链接定位(a标签)
xpath--->元素路径定位
css--->css选择器定位
2、元素定位
1、id定位---->id属性是唯一的。
find_element_by_id()
2、name定位
find_element_by_name()
3、class_name定位
find_element_by_class_name()
4、tag_name定位--->通过元素的标签名称来定位,如:<input>
find_element_by_tag_name()
5、link_text定位--->只定位超链接<a>标签
find_element_by_link_text()
6、partial_link_text定位
find_element_by_partial_link_text()
7、Xpath定位
绝对路径:/开头,中间不能跳跃 如:/html/body/div[1]/div[1]/div[3]/div/div/form/span[1]/input
相对路径://开头,后边跟标签名称或* ,所有属性必须以@修饰,如:"//*[@id='kw']"
层级与属性:父子标签 如://span[@class='bg s_ipt_wr']/input
属性与逻辑:两个属性以上时使用,使用逻辑符号and连接 如://input[@id='kw' and @class='su']/span/input
属性
//*[text()="xxx"]
//*[starts_with(@id,"xxx")] 开头
//*[contains(@classname,"xxx")] 包含
find_element_by_xpath()
8、CSS定位
css定位常用策略
id选择器 #id
class选择器 .classname
元素选择器 input
属性选择器 (input)[id='kw']
层级选择器 p>input或p input
css延申
input[type^='p'] type属性以p字母开头的元素
input[type$='p'] type属性以p字母结尾的元素
input[type*='p'] type属性包含p字母开头的元素
find_element_by_css_selector()
9、By类的方法
from selenium.webdriver.common.by import By
find_element(By.ID,"kw")
10、elements--->返回符合条件的所有标签,列表格式,指明下标
find_elements_by_tag_name()
3、自动化实现步骤
1、导包:from selenium import webdriver import time
2、实例化浏览器:driver=webdriver.Chrome()
3、打开网页:driver.get(url)
4、调用元素定位方法: driver.find_element_by_id("")
5、使用send_keys()方法发送数据:.send_keys("")
6、暂停3秒:time.sleep(3)
7、关闭浏览器:quit()
# 1、导包
# from selenium import webdriver
# import time
# 2、实例化浏览器
# driver = webdriver.Chrome()
# 3、打开项目-url
# driver.get("http://www.baidu.com")
# driver.get("http://www.youdao.com/")
# driver.get("https://email.163.com/")
# 隐式等待10秒
# driver.implicitly_wait(10)
# 4、id定位元素-给文本框传值
# driver.find_element_by_id("kw").send_keys("selenium")
# name定位
# driver.find_element_by_name("wd").send_keys("webdriver")
# class_name定位
# driver.find_element_by_class_name("s_ipt").send_keys("webdriver")
# tag_name定位
# driver.find_element_by_tag_name("a").click()
# link_text定位
# driver.find_element_by_link_text("登录").click()
# partial_link_text定位
# driver.find_element_by_partial_link_text("登").click()
# Xpath定位
# 绝对路径
# driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[3]/div/div/form/span[1]/input').send_keys("自动化")
# 相对路径
# driver.find_element_by_xpath('//input[@id="kw"]').send_keys("web自动化")
# css定位
# id选择器 #id
# driver.find_element_by_css_selector("#kw").send_keys("接口自动化")
# class选择器 .classname
# driver.find_element_by_css_selector(".s_ipt").send_keys("自动化")
# 元素选择器
# driver.find_element_by_css_selector("")
# 属性选择器
# driver.find_element_by_css_selector("[id='kw']").send_keys("测试工程师")
# 层级选择器
# driver.find_element_by_css_selector("span>input[id='kw']").send_keys("工程师")
# elements--->返回符合条件的所有标签,列表格式,指明下标
# driver.find_elements_by_tag_name("input")[7].send_keys("webdriver")
# By类的方法
# from selenium.webdriver.common.by import By
# driver.find_element(By.ID,"kw").send_keys("新型定位")
# 5、暂停3秒
# time.sleep(3)
# 6、关闭浏览器
# driver.quit()