Selenium的第四天打卡——Selenium浏览器应用(完整版)

发布于:2025-05-31 ⋅ 阅读:(28) ⋅ 点赞:(0)

Selenium浏览器应用

目录

Selenium浏览器应用

一、浏览器操作示例代码

1.设置浏览器缩放大小

2.浏览器前进和后退

3.浏览器刷新

二、WebDriver常见方法

三、鼠标事件示例

四、键盘事件示例

五、获取断言信息

六、窗口的切换

七、关键注意事项


一、浏览器操作示例代码

1.设置浏览器缩放大小
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

driver_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 Service

driver_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 Service

driver_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 By

driver_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 Keys

driver_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 Keys

driver_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需设置在浏览器初始化后