查找元素
获取第一个元素
browser.find_element(by=By.ID, value)
参数解释:
by:表示根据xx进行查找,如:根据id查找就是
By.ID
,详见下面value:表示具体的值
返回值: 只返回符合条件的 第一个元素
例子
查找 id 是 book
的 元素:
browser.find_element(By.ID, 'book')
获取所有元素
browser.find_elements(by=By.ID, value)
参数解释:同上
返回值: 返回符合条件的 所有元素
By
导入
from selenium.webdriver.common.by import By
id查找
browser.find_element(By.ID, 'username')
name查找
browser.find_element(By.NAME, 'username')
class查找
browser.find_element(By.CLASS_NAME, 'username')
例子
rows = browser.find_element(By.CLASS_NAME,"el-table__row")
link查找
browser.find_element(By.LINK_TEXT,'')
tag查找
browser.find_element(By.TAG_NAME,'iframe')
css查找
browser.find_element(By.CSS_SELECTOR,'')
查找一组
取下标定位
e = driver.find_elements(By.CLASS_NAME,"j-inputtext")
e[0].send_keys("yoyo")
e[1].send_keys("12333")
class含有空格时解决方法
在实际进行元素定位时,经常发现class name是有多个class组合的复合类,中间以空格隔开。如果直接进行定位会出现报错,可以通过以下方式处理:
- class属性唯一但是有空格,选择空格两边唯一的那一个
- 若空格隔开的class不唯一可以通过索引进行定位
self.driver.find_elements(By.CLASS_NAME,'table-dragColumn')[0]
- 通过css方法进行定位(空格以
.
代替)
#前面加(.)空格地方用点(.)来代替
driver.find_elements(By.CSS_SELECTOR,'.dtb-style-1.table-dragColumns')
#包含整个类
driver.find_elements(By.CSS_SELECTOR,'class="dtb-style-1 table-dragColumns')
xpath 查找
在当前节点下查找节点
table = browser.find_element(By.XPATH,"//*[@class='el-table__body']")
rows = table.find_element(By.XPATH,".//tr[@class='el-table__row']")
获取匹配的第二个元素
这里第二个元素,与数组索引不同,是从 1 开始的
browser.find_element(By.XPATH,"//div[@class='function-keys']/div[2]")
找到符合条件的父标签
找到 span
标签内容包含 登 录
,然后返回其父标签
应用场景:多用在 VUE 按钮
denglu = browser.find_element(By.XPATH,"//span[contains(text(),'登 录')]/..")