Selenium自动化(二)

发布时间:2026/7/22 15:41:59
Selenium自动化(二) Selenium 自动化二CSS Selector选择器选择单个元素选择所有元素选择所有的tag名为div的元素根据id选择元素根据class选择元素选择后代元素选择子元素最终选择元素3选择后代元素最终选择元素3支持复合写法选择class 值为 date 的 div 元素根据其他属性选择CSS 选择器支持通过任何属性来选择元素语法是用一个方括号 []选择特定范围选择属性值包含某个字符串的元素选择 a 节点里面的 href 属性包含 happy 字符串选择属性值以某个字符串开头的元素选择 属性值 以某个字符串 结尾 的元素组选择如同时选择tag名为div和class为happy的元素按次序选择子节点父元素的第n个子节点nth-child,选择所有位置为第2个的所有元素父元素的倒数第n个子节点nth-last-child选择倒数第2个子元素并且是span元素父元素的第几个某类型的子节点nth-of-type父元素的倒数第几个某类型的子节点nth-last-of-type奇数节点nth-child(odd)和偶数节点nth-child(even)父元素的某类型偶数节点nth-of-type(even)兄弟节点选择 相邻 所有~选择h3后面所有的兄弟节点span窗口切换选择框CSS Selector选择器选择单个元素find_element(By.CSS_SELECTOR,CSS Selector参数)选择所有元素find_elements(By.CSS_SELECTOR,CSS Selector参数)选择所有的tag名为div的元素elementsdriver.find_elements(By.CSS_SELECTOR,div)根据id选择元素elementdriver.find_element(By.CSS_SELECTOR,#id值)根据class选择元素elementsdriver.find_elements(By.CSS_SELECTOR,.class值)选择后代元素选择子元素最终选择元素3元素一元素2元素3选择后代元素最终选择元素3元素1元素2元素3支持复合写法选择class 值为 date 的 div 元素div.date根据其他属性选择CSS 选择器支持通过任何属性来选择元素语法是用一个方括号 []elementdriver.find_element(By.CSS_SELECTOR,[href])选择特定范围选择属性值包含某个字符串的元素选择 a 节点里面的 href 属性包含 happy 字符串a[href*happy]选择属性值以某个字符串开头的元素a[href^http]选择 属性值 以某个字符串 结尾 的元素a[href$cn]组选择如同时选择tag名为div和class为happy的元素div,.happy按次序选择子节点父元素的第n个子节点nth-child,选择所有位置为第2个的所有元素:nth-child(2)父元素的倒数第n个子节点nth-last-child选择倒数第2个子元素并且是span元素span:nth-last-child(2)父元素的第几个某类型的子节点nth-of-type:nth-of-type父元素的倒数第几个某类型的子节点nth-last-of-typespan:nth-last-of-type(2)奇数节点nth-child(odd)和偶数节点nth-child(even)p:nth-child(odd)父元素的某类型偶数节点nth-of-type(even)p:nth-of-type(odd)兄弟节点选择 相邻 所有~h3span选择h3后面所有的兄弟节点spanh3~span窗口切换# 在 HTML 语法中frame 元素或者 iframe 元素的内部会包含一个被嵌入的另一份 HTML 文档。要操作被嵌入的 HTML 文档中的元素就必须切换操作范围到被嵌入的文档中最外层的 HTML 称之为主 HTML。# 使用 WebDriver 对象的 switch_to 属性frame_reference 是 frame 元素的属性 name 或 ID。driver.switch_to.frame(frame_reference)# 切换回原来的主htmldriver.switch_to.default_content()# 切换到新窗口driver.switch_to.window(handle)# WebDriver 对象有 window_handles 属性这是一个列表对象里面包括了当前浏览器里面所有的窗口句柄句柄相当于对应网页窗口的一个 ID。forhandleindriver.window_handles:driver.switch_to.window(handle)ifbingindriver.title:break# 依次获取 wd.window_handles 里面的所有句柄对象并且调用 switch_to.window(handle) 方法切入到每个窗口然后检查里面该窗口对象的属性可以是标题栏地址栏判断是不是我们要操作的那个窗口如果是就跳出循环。# 返回到旧窗口。mainWindowdriver.current_window_handle driver.switch_to.window(mainWindow)选择框fromselenium.webdriver.support.selectimportSelect# radio 框及 checkbox 框都是 input 元素# radio 框radio 框选择选项直接用 WebElement 的 click 方法模拟用户点击# checkbox 框选中 checkbox 的一个选项必须先获取当前该复选框的状态先把已选中的点击下确保是未选状态再点击要选的# :checked 是 CSS 伪类选择表示选择 checked 状态的元素对 radio 和 checkbox 类型的 input 有效elementsdriver.find_elements(By.CSS_SELECTOR,#checkbox input[namedy]:checked)forelementinelements:element.click()driver.find_element(By.CSS_SELECTOR,#checkbox input[valuedy]).click()# select 框是 select 标签Selenium 专门提供了一个 Select 类进行操作实例化时传入 Select 元素对应的 WebElement 对象selectSelect(driver.find_element(By.ID,single))# Select类提供了常用的属性和方法all_selected_options,返回所有当前选中的option元素对应的WebElement对象foreleinselect,all_selected_options:print(ele.text)# select_by_value,根据选项的value属性值选择元素select.select_by_value(dy)# select_by_index根据选项的次序选择元素selenium4以上index从0开始# select_by_visible_text根据选项的可见文本选择元素# deselect_by_value根据选项的value属性值去除选中元素# deselevt_by_index根据选项的次序去除选中元素# deselect_by_visible_text根据选项的可见文本去除选中元素# deselect_all去除选中所有元素参考https://www.w3school.com.cn/cssref/css_selectors.asphttps://www.byhy.net/auto/selenium/frame/