一流的网站建设与优化,在线涨粉平台,素材天下,中国装修建材网1.环境准备
1.1 安装selenium
pip install selenium
1.2 下载浏览器驱动#xff0c;这里以Chrome为例#xff1a;
点击Chrome右上角三个点--help--about Chrome查看版本 下载对应版本的驱动#xff0c;这里使用华为云的镜像地址#xff1a;https://repo.huaweicloud.co…1.环境准备
1.1 安装selenium
pip install selenium
1.2 下载浏览器驱动这里以Chrome为例
点击Chrome右上角三个点--help--about Chrome查看版本 下载对应版本的驱动这里使用华为云的镜像地址https://repo.huaweicloud.com/chromedriver/
尽量保证驱动版本和浏览器版本一致前三位保持一致一般就可以正常使用
把chromedriver.exe放在浏览器application目录下
1.3 设置环境变量
因为Pycharm创建项目时默认使用虚拟环境所以将驱动地址添加为环境变量使用更方便。 复制chromedriver.exe的文件地址也就是 C:\Program Files\Google\Chrome\Application然后添加系统环境变量即可。 2.Selenium语法 from selenium import webdriver
from selenium.webdriver.common.by import Bydriver webdriver.Chrome() #创建Chrome的实例代码运行到这里时会打开浏览器
driver.get(https://www.baidu.com) #访问网址代码运行到此时会访问百度2.1 查找元素 建议使用CSS选择器因为它的效率最高 以上的查找函数只能查找到一个元素如果这个元素不存在就会报NosuchElementException我们想一次查找到多个元素怎么办呢只需要使用 driver.find_elements()它的返回值是一个列表元素出现的先后顺序对应返回值的下标。 2.2 获取元素属性
2.2.1 获取元素尺寸 element.size
2.2.3 获取元素文本 element.text
2.2.4 获取元素属性值 element.get_attribute(属性名)
2.2.5 判断元素是否可见 element.is_displayed()
2.2.6 判断元素是否可用 element.is_enabled()
2.2.7 判断元素是否选中 element.is_selected() 2.3 浏览器操作
2.3.1 窗口最大化 driver.maximize_window()
2.3.2 设置窗口大小 deiver.set_window_size(weight , height)
2.3.3 设置窗口位置 driver.set_window_position(x, y)
2.3.4 页面后退 driver.back()
2.3.5 页面前进 driver.forward()
2.3.6 页面刷新 driver.refresh()
2.3.7 关闭浏览器 driver.quit()
2.3.8 关闭当前页面 driver.close()
2.3.9 获取当前页面标题 driver.title
2.3.10 获取当前url driver.current_url 2.4 等待 我们知道代码的执行速度是很快的如果用户的网络较慢或者页面上的元素是异步加载的导致我们查找元素时该元素还未被加载到页面中这时候就需要等待延时一段时间等待元素加载完成。
2.4.1 强制等待 在代码中直接使用 sleep() 延迟代码的执行时间
2.4.2 隐式等待 driver.implicitly_wait(timeout)设置完成后对全局有效如果第一次查找元素未找到就会等待timeout秒后再去查找如果还未找到则会报错。
2.4.3 显式等待 element WebDriverWait(driver, timeout, frequency0.5).until(lambda x: x.find_element(By.ID, id值) )
等待timeout秒如果第一次没找到那么会间隔frequency秒再去找直到until里的函数返回值不为False。显式等待不仅可以等待元素还可以返回找到的元素如果超时还没找到会报错 TimeOutException 2.5 页面交互操作(下拉框弹出框滚动条)
2.5.1 下拉框 方法一直接使用元素的click()方法达到选中对应选项的效果 方法二使用封装的select对象
from selenium.webdriver.support.select import Select
driver webdriver.Chrome()
select Select(driver.find_element(By.CSS_SELECTOR ,#cars)) #元素必须是下拉框对象
select.select_by_index(2) #通过索引选中选项
select.select_by_value(1) #通过value属性值选中该选项
select.select_by_visible_text(奔驰) #通过文本选中选项2.5.2 弹出框
driver webdriver.Chrome()alert driver.switch_to.alert //获取了弹出框对象
message alert.text #获取弹出框文本内容
alert.dismiss() #取消
alert.accept() #确认
2.5.3 滚动条 selenium自身不能操作滚动条只能通过js操作。
js window.scrollTo(0,document.body.scrollHeight)
driver.execute_script(js) 2.6 模拟鼠标操作
actions ActionChains(driver)
actions.click(driver.find_element(By.CSS_SELECTOR,#su)) #单击
actions.double_click(driver.find_element(By.ID,su)) #双击
actions.perform()#可以像上面一样多步操作一起执行也可以像下面一步一步的执行actions.context_click(driver.find_element(By.ID,su)).perform() #右击
actions.move_to_element(driver.find_element(By.ID,su)).perform() #悬停hover
actions.drag_and_drop(element_source , element_target).perform() #把element_source拖动到element_target的位置 2.7 模拟键盘操作
2.7.1 键盘操作 2.7.2 常用键盘值 driver webdriver.Chrome()
input_element driver.find_element(By.ID, input_element_id)# 输入内容
input_element.send_keys(Hello, World!)
# 发送组合键
input_element.send_keys(Keys.CONTROL, a) # 全选
input_element.send_keys(Keys.CONTROL, c) # 复制
input_element.send_keys(Keys.CONTROL, v) # 粘贴