Selenium4自动化

引入

import time
from selenium import webdriver
定义一个driver的变量,用来接收实例化后的浏览器
driver = webdriver.Chrome()
使用get方法,访问网址
driver.get(‘https://www.bilibili.com/’)
time.sleep(2)

元素定位方式

通过id定位,By.ID

driver = webdriver.Chrome()
窗口最大化
driver.maximize_window()
driver.get(“https://www.baidu.com/”)
driver.find_element(By.ID, “kw”).send_keys(“selenium”)
driver.find_element(By.ID, “su”).click()
sleep(3)

通过类名定位,By.CLASS_NAME

driver = webdriver.Chrome()
窗口最大化
driver.maximize_window()
driver.get(“https://www.bilibili.com/”)
只获取class属性的第一个元素
driver.find_element(By.CLASS_NAME,’nav-search-input’).send_keys(“2024新年快乐”)
driver.find_element(By.CLASS_NAME,’channel-link’).click()
获取class属性的所有元素
driver.find_elements(By.CLASS_NAME,’channel-link’)[4].click()
for ele in driver.find_elements(By.CLASS_NAME,’channel-link’):
print(ele.text)
错误用法
driver.find_element(By.CLASS_NAME,’icon-bg icon-bg__channel’).click()
sleep(3)

通过标签名定位,By.TAG_NAME

driver = webdriver.Chrome()
窗口最大化
driver.maximize_window()
driver.get(“https://www.bilibili.com/”)
driver.find_element(By.TAG_NAME, “input”).send_keys(“学习selenium”)
不推荐
driver.find_elements(By.TAG_NAME, “input”)[50].click()

通过名称定位,By.NAME

driver = webdriver.Chrome()
driver.get(‘https://www.baidu.com’)
只获取属性的第一个元素
driver.find_element(By.NAME, ‘wd’).send_keys(“软件测试老白”)
获取属性的所有元素
driver.find_elements(By.NAME, ‘wd’)[0].send_keys(“软件测试老白”)

通过链接文本定位,By.LINK_TEXT

driver = webdriver.Chrome()
driver.get(‘https://www.baidu.com’)
driver.find_element(By.LINK_TEXT, ‘新闻’).click()

通过链接部分文本定位,By.PARTIAL_LINK_TEXT

driver = webdriver.Chrome()
driver.get(‘https://www.baidu.com’)
driver.find_element(By.PARTIAL_LINK_TEXT, ‘闻’).click()

通过css_selector定位,By.CSS_SELECTOR

当一个元素无法直接定位,也就是没有id,name等确定标识,这个时候我们需要考虑使用css selector定位器。

它是一种通过CSS样式选择器来定位元素的方法

CSS常用汇总

选择器格式示例示例说明
标签选择器html标签input选择所有<input>元素
ID选择器#id属性值#kw选择所有id=’kw’的元素
类选择器.class属性值.nav-search-input选择所有class=’nav-search-input’的元素
属性选择器1[属性名][name=”wd”]选择所有name等于”wd”的元素
组合选择器标签加属性描述input.s_ipt选择所有class=’_ipt’的<input>元素
父子关系元素1>元素2div>a选择所有父级是<div>的<a>元素
后代关系元素1 元素2div a选择<div>中的所有<a>元素
第一子元素:first-childa:first-child选择所有<a>元素且该元素是其父级的第一个元素
最后一个元素:last-childa:last-child选择所有<a>元素且该元素是其父级的最后一个元素
顺序选择器:nth-child(n)a:nth-child(2)选择所有<a>元素且该元素是其父级的第二个子元素