python selenium4 查找元素 作者:马育民 • 2025-02-02 22:12 • 阅读:10003 # 查找元素 ## 获取第一个元素 ``` 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(),'登 录')]/..") ``` 原文出处:http://malaoshi.top/show_1GWWJWMC8UA.html