Selenium浏览器应用
目录
Selenium浏览器应用
一、浏览器操作示例代码
1.设置浏览器缩放大小
2.浏览器前进和后退
3.浏览器刷新
二、WebDriver常见方法
三、鼠标事件示例
四、键盘事件示例
五、获取断言信息
六、窗口的切换
七、关键注意事项
一、浏览器操作示例代码
1.设置浏览器缩放大小
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedriver_path = r"D:\tools\chromedriver.exe"
service = Service(executable_path=driver_path)
driver = webdriver.Chrome(service=service)driver.maximize_window()
# #隐式等待
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
time.sleep(10)# 设置特定窗口尺寸(宽480,高800)
driver.set_window_size(480, 800)
2.浏览器前进和后退
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedriver_path = r"D:\tools\chromedriver.exe"
service = Service(executable_path=driver_path)
driver = webdriver.Chrome(service=service)driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")driver.back() # 后退
time.sleep(3)
driver.forward() # 前进
time.sleep(3)
3.浏览器刷新
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedriver_path = r"D:\tools\chromedriver.exe"
service = Service(executable_path=driver_path)
driver = webdriver.Chrome(service=service)driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
time.sleep(2)driver.refresh() # 刷新页面
time.sleep(3)
二、WebDriver常见方法
element.click() # 点击元素
element.send_keys() # 输入内容
element.clear() # 清除内容
element.submit() # 提交表单
三、鼠标事件示例
在WebDriver中,将这些关于鼠标操作的方法封住在ActionChains类中
ActionChains类提供了鼠标操作的常用方法
1.perform()执行所有ActionChains中存储的行为
2.context_click()右击
3.double_click()双击
4.drag_and_drop()拖动
5.move_element()鼠标悬停
这里只演示鼠标悬停操作,如下:
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import Bydriver_path = r"D:\tools\chromedriver.exe"
service = Service(driver_path)
driver = webdriver.Chrome(service=service)driver.get("http://www.baidu.com")
time.sleep(2)# 鼠标悬停到设置按钮
st_button = driver.find_element(By.CSS_SELECTOR, 'span[id="s-usersetting-top"]')
ActionChains(driver).move_to_element(st_button).perform()
time.sleep(2)
四、键盘事件示例
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
#导入keys类 才能调用键盘
from selenium.webdriver.common.keys import Keysdriver_path = r"D:\tools\chromedriver.exe"
service = Service(driver_path)
driver = webdriver.Chrome(service=service)driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
time.sleep(2)
#定位输入框
search_bx = driver.find_element(By.CSS_SELECTOR, 'input[id="kw"]')
search_bx.send_keys("向日葵葵")
time.sleep(3)
#调用哪个就写哪个英文名,注意大写
#键盘删除键 删除多余的葵,这个键只能删除一个字符,要想多删,使用乘法
search_bx.send_keys(3 * Keys.BACK_SPACE)
time.sleep(2)# 全选内容
search_bx.send_keys(Keys.CONTROL, 'a')
time.sleep(2)# 回车搜索
search_bx.send_keys(Keys.ENTER)
time.sleep(2)
五、获取断言信息
五、获取断言信息:为了判断这个操作是否成功
判断方式:1.文本信息 2.title信息 3.url地址
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keysdriver_path = r"D:\tools\chromedriver.exe"
service = Service(driver_path)
driver = webdriver.Chrome(service=service)driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
time.sleep(2)search_bx = driver.find_element(By.CSS_SELECTOR, 'input[id="kw"]')
search_bx.send_keys("长孙无忌")
search_bx.send_keys(Keys.ENTER)
time.sleep(3)#获取搜索出来的第一页的内容标题
#如果这个方法获取到的是多个值,则会把值放到一个列表中
# 注意:这里要使用find_elements,复数形式
titles = driver.find_elements(By.XPATH, '//div[@id="content_left"]//h3')
for t in titles:print(t.text)time.sleep(3)#获取网页标题 格式:搜索内容_百度搜索
print(driver.title)#获取当前网页url:
print(driver.current_url)# 六、设置元素等待
# 为了解决页面加载太慢,而代码执行过快,元素定位不到的问题
# ◎ 强制等待# time.sleep(4)这个是python中自带的日期时间模块完成的
# ◎ 隐式等待driver.implicitly_wait(10)
六、窗口的切换
#七、窗口的切换
#每个窗口也都有句柄的概念,类似于id,具有唯一性
#1.直接切换
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
#导入keys类 才能调用键盘
from selenium.webdriver.common.keys import Keys
driver_path=(r"D:\newmade\pythonStudy\chromeDriver\chromedriver-win64\chromedriver.exe")
# #创建管理对象
service=Service(driver_path)
#打开浏览器
driver=webdriver.Chrome(service=service)#窗口最大化
driver.maximize_window()
#隐式等待
driver.implicitly_wait(10)
#打开网页
driver.get("http://www.baidu.com")
time.sleep(2)#定位输入框
search_bx=driver.find_element(By.CSS_SELECTOR,'input[id="kw"]')search_bx.send_keys("长孙无忌")search_bx.send_keys(Keys.ENTER)
time.sleep(3)#获得句柄
windowhandle=driver.current_window_handle
print(windowhandle)#点击使得可以跳入第二个窗口
search_bx=driver.find_element(By.CSS_SELECTOR,'div[class="_text_pbmk1_40"]').click()
time.sleep(3)#获取当前浏览器所有的窗口句柄,是列表形式的
handles=driver.window_handles
print(handles)handle2=driver.current_window_handle#根据句柄进行切换
for handle in handles:if handle!=handle2:driver.switch_to.window(handle)time.sleep(10)#2.根据下标进行窗口切换,下标为-1的是最新打开的窗口,0的是第一个打开的窗口
driver.switch_to.window(handles[0])
七、关键注意事项
- 元素定位时使用复数形式
find_elements
获取多个元素 - 键盘操作需导入
Keys
类 - 鼠标操作需导入
ActionChains
类 - 隐式等待
implicitly_wait
需设置在浏览器初始化后