selenium之WebDriver的常用方法

WebDriver是操作浏览器驱动,启动服务,然后创建Chrome驱动程序实例对象操作浏览器,详细工作原理可以参考selenium之WebDriver的工作原理

本篇主要介绍WebDriver的常用方法及常用参数

import time
from selenium import webdriver

driver = webdriver.Chrome()

driver.get("https://blog.youkuaiyun.com/zzrs_xssh")  # 打开浏览器请求的url
elem = driver.find_element_by_xpath('//*[@id="mainBox"]/main/div[2]/div[2]/h4/a').click()


print(driver.name)  # chrome
# 返回当前浏览器的名称

print(driver.title)  # zzrs_xssh的博客__xiao_gu_优快云博客-软件测试,笔记领域博主
# 返回当前窗口的title

# driver.execute("CommandExecutor", params=None)
# 执行CommandExecutor命令,driver.get的执行原理就是调用execute方法
# driver.get方法可以写成driver.execute("get", {'url': 'https://blog.youkuaiyun.com/zzrs_xssh'})
print(driver.execute("getTitle")["value"])  # zzrs_xssh的博客__xiao_gu_优快云博客-软件测试,笔记领域博主
# driver.title也是调用execute方法

print(driver.current_url)  # https://blog.youkuaiyun.com/zzrs_xssh
# 返回经过处理的当前页面的url

# print(driver.page_source)
# # 返回当前页面的源码

# driver.close()
# # 关闭当前窗口
#
# driver.quit()
# # 关闭当前浏览器

print(driver.current_window_handle)  # CDwindow-B59BEFF9522213021F81B8C1C01C8180
# 返回当前窗口的句柄

print(driver.window_handles)
# 返回打开的所有窗口的句柄

driver.maximize_window()
# 设置当前窗口最大化

driver.minimize_window()
# 设置当前窗口最小化

driver.set_window_size(1920, 1080)
# 手动设置浏览器宽和高

driver.get_window_size()
# 获取当前窗口的宽和高,返回一个字典{'width': 946, 'height': 1020}

driver.fullscreen_window()
# 让整个窗口最大化

driver.switch_to.window("window name")
# 切换到指定窗口,window name也可以是窗口的句柄

driver.switch_to.frame("frame_reference")
# 切换到指定的frame, frame_reference 可以是frame的index, name, element
# driver.switch_to.frame('frame_name')
# driver.switch_to.frame(1)
# driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])

driver.back()
# 在浏览器的历史记录中向后一步

driver.forward()
# 在浏览器的历史记录中向前一步

driver.refresh()
# 刷新当前页面

driver.set_page_load_timeout(1)
# 设置页面加载的超时时间
# 应用在页面加载时间较长且不需要页面完全加载即可操作页面时使用,与try连用
# driver.set_page_load_timeout(1)
# try:
#     driver.get("https://blog.youkuaiyun.com/zzrs_xssh") # 设置的超时时间肯定会小于页面的加载时间,所以这句代码会抛异常
# except TimeoutError:
#     driver.execute_script("window.stop()")  # 抛异常以后执行js代码,让页面停止加载,然后继续执行之后的操作

driver.get_screenshot_as_file("filename")
# 给当前的窗口截屏,参数是一个截屏以后的保存路径

driver.save_screenshot("filename")
# 功能同上,这个方法调用的就是get_screenshot_as_file方法

driver.get_log('driver')
# 获取当前浏览器的日志

driver.quit()

webdriver执行js代码以及操作cookie的方法可以参考selenium常用方法2
元素定位方法请参考selenium常用方法1

<think>我们被要求补全从selenium库导入各种模块的Python代码。根据引用内容,我们可以看到以下模块被提及: - webdriver:用于启动浏览器驱动(引用[2]、[4]、[5]) - Service:在提供的引用中没有直接出现,但通常用于指定浏览器驱动路径(可能需要) - By:用于指定元素定位方式(引用[3]、[5]) - WebDriverWait:用于设置显式等待(引用[2]、[3]、[4]、[5]) - expected_conditions:通常重命名为EC(引用[2]、[3]、[4]、[5]) 另外,在引用[4]中,还使用了`time`模块的`sleep`,但这不是从selenium导入的。 根据常见的导入方式,我们可以这样写: ```python from selenium import webdriver from selenium.webdriver.chrome.service import Service # 如果需要使用Service来配置浏览器驱动 from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC ``` 注意:Service类通常位于`selenium.webdriver.chrome.service`(对于Chrome)或`selenium.webdriver.firefox.service`(对于Firefox)等子模块中。由于用户没有明确浏览器,我们可以根据常用情况(如Chrome)给出示例。如果用户使用其他浏览器,需要相应调整。 另外,在引用[4]中,我们可以看到导入WebDriverWait和expected_conditions的方式: ```python from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait ``` 所以,完整的导入代码可以是: ```python from selenium import webdriver from selenium.webdriver.chrome.service import Service # 如果使用Chrome且需要Service from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC ``` 如果不需要Service(例如,浏览器驱动已经添加到系统路径),则可以省略Service的导入。 因此,根据用户要求补全导入代码,我们可以提供上述代码。 注意:由于用户要求“补全”,我们提供了常见的导入方式。如果用户有特定需求(比如使用Firefox),可能需要调整。 最后,根据系统指令,我们需要生成相关问题。 </think>### 补全 Selenium 导入代码 根据引用内容,补全从 Selenium 库导入所需模块的标准代码如下: ```python # 导入基础模块 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 可选:导入Service类(用于浏览器驱动的配置) from selenium.webdriver.chrome.service import Service # Chrome浏览器 # 或 Firefox 浏览器:from selenium.webdriver.firefox.service import Service ``` #### 关键模块说明: 1. **`webdriver`** 浏览器自动化核心模块,用于启动浏览器实例[^1][^2] 2. **`By`** 元素定位策略(ID/XPath/CSS等),与`expected_conditions`配合使用[^3][^5] 3. **`WebDriverWait`** 显式等待的核心类,需设置超时时间(单位:秒)[^4][^5] 4. **`expected_conditions`** 页面状态检测模块(重命名为EC),包含: ```python EC.presence_of_element_located() # 元素存在于DOM EC.visibility_of_element_located() # 元素可见 EC.element_to_be_clickable() # 元素可点击 EC.title_is() # 页面标题匹配 ``` #### 典型使用示例: ```python # 启动浏览器 driver = webdriver.Chrome() # 显式等待元素出现 element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "element-id")) ) # 显式等待页面标题 WebDriverWait(driver, 5).until(EC.title_is("目标标题")) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值