pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple下载chromedriver
浏览器:http://npm.taobao.org/mirrors/chromedriver/
找到自己Chrome对应的版本下载即可
建议调用Chrome()时指定chromedriver的路径,如果嫌麻烦可以放到以下任意一个位置都能正常打开Chrome浏览器:
- 方法1:任意位置,调用时指定chromedriver路径。如果与当前执行文件同级目录也可以不指定
- 方法2:当前项目虚拟环境的venv/Scripts/中,与python.exe同级目录中
- 方法3(不建议):系统上Python安装的位置,windows一般是:C:UsersAdministratorAppDataLocalProgramsPythonPython39
- 方法4(不建议):系统上Chrome安装位置,windows一般是:C:UsersAdministratorAppDataLocalGoogleChromeApplication
操作步骤为:加载驱动–》访问链接–》页面操作–》关闭浏览器
import time
from selenium import webdriver
# 定位器
from selenium.webdriver.common.by import By
# 获取驱动
driver = webdriver.Chrome("/Users/chenbinhao/Downloads/chromedriver")
# 访问百度
driver.get("http://www.baidu.com")
# 获取搜索框元素
inputElement = driver.find_element(By.ID, "kw")
# 发送搜索内容到搜索框
inputElement.send_keys("selenium")
# 获取搜索按钮
searchElement = driver.find_element(By.ID, "su")
# 点击搜索
searchElement.click()
# 休眠5s
time.sleep(5)
# 退出浏览器
driver.quit()
3、八种定位器
两种查找元素的方法:find_element(by=By.ID, value=None) -> WebElement find_elements(by=By.ID, value=None) -> List[WebElement]
参数说明:
- by=By.ID 定位策略,总共八种,分别是:
- By.ID 通过元素的ID
- By.CLASS_NAME 通过元素的class
- By.NAME 通过元素的name
- By.TAG_NAME 通过元素的标签
- By.LINK_TEXT 通过超链接文本
- By.PARTIAL_LINK_TEXT 通过超链接文本(模糊查询)
- By.XPATH 通过xpath(万能)
- By.CSS_SELECtOR 通过css选择器(万能)
- value=None 要定位的元素
两种方法的区别:
- find_element() 返回第一个匹配到的元素,如果没找到则会报错
- find_elements() 返回匹配到的所有元素,如果没找到则会返回空列表
通过一个案例演示下所有的,首先新建一个测试html到本地:
zzzxydq测试笔记
用户名:
密码
测试啦
再一次测试啦
终极抗击肺炎啊
抗击肺炎
- 111
- 222
- 333
- aaa
- bbb
- ccc
方式一:通过元素id
一般,id值是唯一的,属于一个元素
# 找到id=username的元素
username = driver.find_element(By.ID, "username")
# 输入 张三
username.send_keys("张三")
# 找到id=password的元素
password = driver.find_element(By.ID, "password")
# 输入 123
password.send_keys("123")
方式二:通过元素class
一般,可以多个元素共用一个class
# 通过元素class查找(仅返回匹配到的第一个) login_btn = driver.find_element(By.CLASS_NAME, "login") # 点击 login_btn.click()
# 找到class=li的所有元素
lis = driver.find_elements(By.CLASS_NAME, "li")
for li in lis:
# 打印元素的内容
print(li.text)
### 执行结果
111
222
333
方式三:通过元素name
同样,一般可以多个元素共用一个name
# 找到一个name=password的元素
password = driver.find_element_by_name("password")
# 输入 123
password.send_keys("123")
方式四:通过元素标签
# 找到一个标签为p的元素
p = driver.find_element(By.TAG_NAME, "p")
print(p.text)
# 执行结果为:
测试啦
# 找到所有标签为p的元素
ps = driver.find_elements(By.TAG_NAME, "p")
for p in ps:
print(p.text)
# 执行结果为:
测试啦
再一次测试啦
方式五:通过超链接文本
# 找一个一个超链接,它的文本内容为"抗击肺炎" atexts = driver.find_elements(By.LINK_TEXT, "抗击肺炎") for atext in atexts: print(atext.text) # 执行结果 抗击肺炎方式六:通过超链接文本(模糊查询)
atexts = driver.find_elements(By.PARTIAL_LINK_TEXT, "抗击肺炎") for atext in atexts: print(atext.text) # 执行结果为: 终极抗击肺炎啊 抗击肺炎方式七:通过xpath
# 通过xpath li = driver.find_element(By.XPATH, "/html/body/div/ul[1]/li[2]") print(li.text) # 执行结果: 222方式八:通过css选择器
# 通过css选择器 li = driver.find_element(By.CSS_SELECTOR, "body > div > ul > li:nth-child(2)") print(li.text) ### 执行结果: 222
参考文章:
https://www.cnblogs.com/poloyy/p/12568983.html



