python selenium4 查找元素

查找元素

获取第一个元素

  1. browser.find_element(by=By.ID, value)

参数解释:

  • by:表示根据xx进行查找,如:根据id查找就是 By.ID,详见下面

  • value:表示具体的值

返回值: 只返回符合条件的 第一个元素

例子

查找 id 是 book 的 元素:

  1. browser.find_element(By.ID, 'book')

获取所有元素

  1. browser.find_elements(by=By.ID, value)

参数解释:同上

返回值: 返回符合条件的 所有元素

By

导入

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

id查找

  1. browser.find_element(By.ID, 'username')

name查找

  1. browser.find_element(By.NAME, 'username')

class查找

  1. browser.find_element(By.CLASS_NAME, 'username')

例子

  1. rows = browser.find_element(By.CLASS_NAME,"el-table__row")

link查找

  1. browser.find_element(By.LINK_TEXT,'')

tag查找

  1. browser.find_element(By.TAG_NAME,'iframe')

css查找

  1. browser.find_element(By.CSS_SELECTOR,'')

查找一组

取下标定位

  1. e = driver.find_elements(By.CLASS_NAME,"j-inputtext")
  2. e[0].send_keys("yoyo")
  3. e[1].send_keys("12333")

class含有空格时解决方法

在实际进行元素定位时,经常发现class name是有多个class组合的复合类,中间以空格隔开。如果直接进行定位会出现报错,可以通过以下方式处理:

  • class属性唯一但是有空格,选择空格两边唯一的那一个
  • 若空格隔开的class不唯一可以通过索引进行定位
    self.driver.find_elements(By.CLASS_NAME,'table-dragColumn')[0]
  • 通过css方法进行定位(空格以.代替)
  1. #前面加(.)空格地方用点(.)来代替
  2. driver.find_elements(By.CSS_SELECTOR,'.dtb-style-1.table-dragColumns')
  3. #包含整个类
  4. driver.find_elements(By.CSS_SELECTOR,'class="dtb-style-1 table-dragColumns')

xpath 查找

在当前节点下查找节点

  1. table = browser.find_element(By.XPATH,"//*[@class='el-table__body']")
  2. rows = table.find_element(By.XPATH,".//tr[@class='el-table__row']")

获取匹配的第二个元素

这里第二个元素,与数组索引不同,是从 1 开始的

  1. browser.find_element(By.XPATH,"//div[@class='function-keys']/div[2]")

找到符合条件的父标签

找到 span 标签内容包含 登 录,然后返回其父标签

应用场景:多用在 VUE 按钮

  1. denglu = browser.find_element(By.XPATH,"//span[contains(text(),'登 录')]/..")

原文出处:http://malaoshi.top/show_1GWWJWMC8UA.html