id选择器
说明:根据元素id属性来选择格式:#id
例如:#userA <选择id属性值为userA的元素>
class选择器
说明:根据元素class属性来选择格式:.class
例如:.telA <选择class属性值为telA的所有元素>
元素选择器
说明:根据元素的标签名选择格式:element
例如:input <选择所有input元素>
属性选择器
说明:根据元素的属性名和值来选择
格式:[attribute=value] element[attribute=value]
例如:[type="password"] <选择type属性值为password的元素>
练习
需求:打开注册A.html页面,完成以下操作
1). 使用CSS定位方式中id选择器定位用户名输入框,并输入:admin
2). 使用CSS定位方式中属性选择器定位密码输入框,并输入:123456
3). 使用CSS定位方式中class选择器定位电话号码输入框,并输入:18600000000
使用CSS定位方式中元素选择器定位注册按钮,并点击
层级选择器
说明:根据元素的父子关系来选择
格式1:element1>element2元素
例如1:p[id='p1']>input
通过element1来定位element2,并且element2必须为element1的直接子
<定位指定p元素下的直接子元素input>
格式2:element1 element2
例如2:p[id='p1'] input
CSS延伸[了解
1.1 CSS总结
1. 常用的CSS定位选择器有哪些?
1. 八种元素定位方式分类-汇总1. id、name、class_name:为元素属性定位
2. tag_name:为元素标签名称
3. link_text、partial_link_text:为超链接定位(a标签)
4. XPath:为元素路径定位
5. CSS:为CSS选择器定位
XPath与CSS类似功能对比
定位元素的另一种写法--延伸[了解
方法:find_element(by=By.ID, value=None)
备注:需要两个参数,第一个参数为定位的类型由By提供,第二个参数为定位的具体方式
示例:
1. driver.find_element(By.CSS_SELECTOR, '#emailA').send_keys("123@126.com") 2. driver.find_element(By.XPATH, '//*[@id="emailA"]').send_keys('234@qq.com')
3. driver.find_element(By.ID, "userA").send_keys("admin")
4. driver.find_element(By.NAME, "passwordA").send_keys("123456")
5. driver.find_element(By.CLASS_NAME, "telA").send_keys("18611111111")
6. driver.find_element(By.TAG_NAME, 'input').send_keys("123")
7. driver.find_element(By.LINK_TEXT, '访问 新浪 网站').click()
8. driver.find_element(By.PARTIAL_LINK_TEXT, '访问').click()
导入By类
导包:from selenium.webdriver.common.by import By
class By(object): """
Set of supported locator strategies. """
ID = "id"
XPATH = "xpath" LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text" NAME = "name"
TAG_NAME = "tag name" CLASS_NAME = "class name" CSS_SELECTOR = "css selector"
1.1 find_element_by_xxx()和find_element() 区别说明:通过查看find_element_by_id底层实现方法,发现底层是调用find_element方法进行的封装;
def find_element_by_id(self, id_): """Finds an element by id.
:Args:
- id\_ - The id of the element to be found.
:Usage:
driver.find_element_by_id('foo')
"""
return self.find_element(by=By.ID, value=id_)