Selenium WebDriver API 中涉及的一些常用方法和类

这篇具有很好参考价值的文章主要介绍了Selenium WebDriver API 中涉及的一些常用方法和类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Selenium WebDriver API 是 Selenium 提供的一组方法和类,用于控制浏览器和操作 Web 元素。这些 API 提供了丰富的功能,包括但不限于:

1. **查找元素**:通过不同的定位方式(如ID、Class Name、XPath等)在页面中查找元素。
2. **模拟用户操作**:包括点击、输入文本、清除文本、提交表单等操作。
3. **处理弹出框**:可以处理页面中的警告框、确认框和提示框。
4. **窗口和标签页管理**:可以打开新的窗口或标签页,切换窗口,关闭窗口等操作。
5. **浏览器导航**:可以前进、后退、刷新页面等浏览器导航操作。
6. **执行 JavaScript**:可以在页面上执行 JavaScript 脚本。
7. **等待机制**:包括隐式等待和显式等待,用于处理页面加载延迟、元素可见性等情况。
8. **浏览器设置**:可以设置浏览器的参数和选项,如窗口大小、浏览器语言等。
总之,Selenium WebDriver API 提供了丰富的工具和接口,使得开发人员可以轻松地控制浏览器和操作页面元素,实现自动化测试脚本的编写和执行。

--------------------

以下是 Selenium WebDriver API 中涉及的一些常用方法和类:

### 方法(Methods):

1. **find_element(by, value)**:查找页面中第一个符合条件的元素。
2. **find_elements(by, value)**:查找页面中所有符合条件的元素。
3. **get(url)**:访问指定的 URL。
4. **click()**:点击元素。
5. **send_keys(*value)**:向输入框中输入文本。
6. **clear()**:清除输入框中的文本。
7. **submit()**:提交表单。
8. **execute_script(script, *args)**:在页面上执行 JavaScript 脚本。
9. **switch_to.frame(frame_reference)**:切换到指定的 iframe 或 frame。
10. **switch_to.window(window_name)**:切换到指定的窗口。
11. **close()**:关闭当前窗口。
12. **quit()**:关闭浏览器并退出 WebDriver。
13. **get_attribute(name)**:获取元素的指定属性值。
14. **is_displayed()**:判断元素是否可见。
15. **is_enabled()**:判断元素是否可用。
16. **is_selected()**:判断元素是否被选中。
17. **back()**:后退到上一个页面。
18. **forward()**:前进到下一个页面。
19. **refresh()**:刷新当前页面。
20. **save_screenshot(filename)**:保存当前页面截图。
21. **add_cookie(cookie_dict)**:添加 Cookie。
22. **delete_cookie(name)**:删除指定名称的 Cookie。
23. **delete_all_cookies()**:删除所有 Cookie。
24. **get_cookies()**:获取当前页面的所有 Cookie。

### 类(Classes):

1. **WebDriver**:WebDriver 接口,代表了浏览器实例。
2. **WebElement**:WebElement 接口,代表了页面中的一个元素。
3. **By**:By 类,包含了一组用于定位元素的方法。
4. **ActionChains**:ActionChains 类,用于执行各种用户交互操作。
5. **Options**:Options 接口,代表了浏览器的选项和配置。
6. **Keys**:Keys 类,包含了一组用于模拟键盘按键的常量。
7. **Timeouts**:Timeouts 接口,用于设置等待超时时间。
8. **WindowHandles**:WindowHandles 接口,用于管理浏览器窗口。

这些方法和类可以帮助开发人员控制浏览器和操作页面元素,实现自动化测试任务。
--------------------

### 类(Classes)示例介绍:
#### 1. WebDriver:
WebDriver 接口代表了浏览器实例,通过它可以创建浏览器对象并控制浏览器的行为。
from selenium import webdriver
# 创建 Chrome 浏览器实例
driver = webdriver.Chrome()
# 访问网页
driver.get("https://www.example.com")

#### 2. WebElement:
WebElement 接口代表了页面中的一个元素,可以通过定位方式找到元素并进行操作。
from selenium import webdriver
# 创建 Chrome 浏览器实例
driver = webdriver.Chrome()
# 定位并点击按钮元素
button_element = driver.find_element_by_id("button")
button_element.click()

#### 3. By:
By 类包含了一组用于定位元素的方法,常用于在 WebDriver 中查找页面元素。
from selenium import webdriver
from selenium.webdriver.common.by import By
# 创建 Chrome 浏览器实例
driver = webdriver.Chrome()
# 定位并点击按钮元素(使用 By.ID 定位)
button_element = driver.find_element(By.ID, "button")
button_element.click()

#### 4. ActionChains:
ActionChains 类用于执行各种用户交互操作,如鼠标移动、双击、右键点击等。
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
# 创建 Chrome 浏览器实例
driver = webdriver.Chrome()
# 定位元素
element = driver.find_element_by_id("myElement")
# 创建 ActionChains 对象
actions = ActionChains(driver)
# 鼠标移动到元素上
actions.move_to_element(element).perform()

#### 5. Options:
Options 接口代表了浏览器的选项和配置,可以用于设置浏览器的参数。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 创建 Chrome 浏览器选项对象
chrome_options = Options()
# 设置浏览器参数
chrome_options.add_argument("--headless")  # 设置为无头模式
# 创建 Chrome 浏览器实例,并加载选项
driver = webdriver.Chrome(options=chrome_options)
# 访问网页
driver.get("https://www.example.com")

#### 6. Keys:
Keys 类包含了一组用于模拟键盘按键的常量,可以用于模拟键盘操作。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# 创建 Chrome 浏览器实例
driver = webdriver.Chrome()
# 定位输入框并输入文本
input_element = driver.find_element_by_id("myInput")
input_element.send_keys("Hello, World!")
# 模拟键盘按下 Enter 键
input_element.send_keys(Keys.ENTER)

#### 7. Timeouts:
Timeouts 接口用于设置等待超时时间,可以在 WebDriver 中设置隐式等待或显式等待的超时时间。
from selenium import webdriver
# 创建 Chrome 浏览器实例
driver = webdriver.Chrome()
# 设置隐式等待超时时间为10秒
driver.implicitly_wait(10)
# 访问网页
driver.get("https://www.example.com")

#### 8. WindowHandles:
WindowHandles 接口用于管理浏览器窗口,可以获取当前窗口句柄、切换窗口等操作。
from selenium import webdriver
# 创建 Chrome 浏览器实例
driver = webdriver.Chrome()
# 打开新窗口
driver.execute_script("window.open('https://www.example.com', '_blank');")
# 获取所有窗口句柄
window_handles = driver.window_handles
# 切换到第二个窗口
driver.switch_to.window(window_handles[1])
# 关闭当前窗口
driver.close()
*******************
在 Selenium 中,WebDriver 不区分窗口和标签页。如果你的网站打开了一个新的标签页或窗口,Selenium 会通过窗口句柄(window handle)来让你操作它。每个窗口都有一个唯一的标识符,在单个会话中保持持久性。你可以通过以下方法来获取当前窗口的窗口句柄:
current_window_handle = driver.current_window_handle
这将返回当前窗口的窗口句柄,你可以将其用于后续操作,如切换窗口或执行其他操作。

`driver.window_handles` 返回一个包含所有窗口句柄的列表你可以使用这个列表来实现窗口之间的切换或执行其他需要窗口句柄的操作。例如:
# 获取所有窗口句柄列表
handles = driver.window_handles
# 切换到第二个窗口
driver.switch_to.window(handles[1])
这样,你就可以根据需要操作不同的窗口或标签页。
*******************
在 Selenium 4 及更高版本中,你可以使用 `switch_to.new_window()` 方法创建一个新的窗口或标签页。
以下是如何使用 Python 打开一个新标签页并切换到它的示例:
from selenium import webdriver
# 创建 Chrome 驱动程序的实例
driver = webdriver.Chrome()
# 打开一个新标签页并切换到它
driver.switch_to.new_window('tab')

类似地,你可以使用以下代码打开一个新窗口并切换到它:
from selenium import webdriver
# 创建 Chrome 驱动程序的实例
driver = webdriver.Chrome()
# 打开一个新窗口并切换到它
driver.switch_to.new_window('window')
这些方法将创建一个新的窗口或标签页,并自动在屏幕上切换焦点到它,无需使用 `switch_to.window()` 方法显式切换到它。

-------------------
`selenium.webdriver` 模块是 Selenium Python 客户端库中的一个重要模块,它包含了 WebDriver 的实现以及各种与浏览器交互相关的类和方法。以下是一些常见的在 `selenium.webdriver` 模块中使用的类和方法:
1. **`webdriver` 模块下的浏览器实现类**:
   - `Chrome`: Chrome 浏览器的实现类。
   - `Firefox`: Firefox 浏览器的实现类。
   - `Edge`: Edge 浏览器的实现类。
   - 其他如 `Opera`、`Safari` 等。
2. **`webdriver.common.keys` 模块**:
   - `Keys`: 包含了模拟键盘按键的常量,用于发送键盘输入。
3. **`webdriver.common.by` 模块**:
   - `By`: 包含了一组用于定位元素的方法,如 ID、Class Name、XPath 等。
4. **`webdriver.support` 模块**:
   - `expected_conditions`: 包含了一组用于设置显式等待条件的类和方法,如元素可见、存在、可点击等条件。
5. **`webdriver.support.ui` 模块**:
   - `WebDriverWait`: 用于设置显式等待的类,结合 `expected_conditions` 中的条件来等待元素的出现。
通过 `selenium.webdriver` 模块,可以方便地创建不同浏览器的 WebDriver 实例,并进行各种操作,如访问 URL、查找元素、执行 JavaScript 等。同时,也可以结合其他模块如 `selenium.webdriver.common.keys` 和 `selenium.webdriver.support.ui` 来实现更复杂的操作和等待机制。 文章来源地址https://www.toymoban.com/news/detail-840189.html

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()

try:
    # 打开网页
    driver.get("https://www.hao123.com/")

    # 获取页面中所有input元素
    input_elements = driver.find_elements(By.TAG_NAME, "input")

    # 输出所有的input元素
    for input_element in input_elements:
        print(input_element.get_attribute("outerHTML"))

    # 查找搜索框
    search_input = driver.find_element(By.CSS_SELECTOR, 'input[data-hook="searchInput"]')

    # 输入搜索词
    search_input.send_keys("Selenium库")

    # 查找搜索按钮并点击
    search_button = driver.find_element(By.CSS_SELECTOR, 'input[data-hook="searchSubmit"]')
    search_button.click()

    # 处理新窗口,WebDriver不知道哪个窗口处于活动状态的。使用新窗口 您将需要切换到它。
    handles = driver.window_handles
    if len(handles) > 1:
        driver.switch_to.window(handles[1])  # 切换到新打开的窗口

    # 在这里可以添加等待搜索结果加载完成的逻辑
    time.sleep(8)  # 等待5秒钟

finally:
    # 关闭浏览器
    driver.quit()
from selenium import webdriver

# 创建 Chrome 浏览器实例,并设置隐式等待时间为10秒
driver = webdriver.Chrome()
driver.implicitly_wait(10)

# 后续的元素查找操作会等待最多10秒
element = driver.find_element_by_id("myElement")
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

# 创建 Chrome 浏览器实例
driver = webdriver.Chrome()

# 显式等待,等待10秒直到元素可见
element = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.ID, "myElement"))
)

到了这里,关于Selenium WebDriver API 中涉及的一些常用方法和类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • selenium 防止window.navigator.webdriver对象检测的方法

    当我们使用selenium 去访问或爬取某些网站的时候会遇到网站对selenium检测的一些情况。 正常用浏览器访问时:window.navigator属性是undefind 而使用selenium去访问 则会给window.navigator 设置webdriver属性 处理方法: 1.可以使用CDP(chrome开发者工具协议)解决这个问题 利用它可以实现每个页

    2024年02月22日
    浏览(10)
  • pyinstaller打包selenium后弹出webdriver命令行窗口的解决方法

    pyinstaller打包selenium后弹出webdriver命令行窗口的解决方法

    最近在使用tkinter来开发一个GUI程序,用到了selenium的headless模式。代码调试妥当,准备用pyinstaller打包成exe文件,却发现在pycharm里面一切正常,打包后会弹出一个黑框,影响体验: 有的同学还会有类似以下日志 搜索一番之后大概发现了网上说的2种方案 pyinstaller 使用 --wind

    2024年02月11日
    浏览(43)
  • selenium使用 webdriver.Chrome() 报错,找不到执行文件的解决方法(一)

    selenium使用 webdriver.Chrome() 报错,找不到执行文件的解决方法(一)

    使用 driver = webdriver.Chrome() 时,遇到以下报错: selenium.common.exceptions.WebDriverException: Message: \\\'chromedriver\\\' executable needs to be in PATH. 两种解决方法: (1)在webdriver.Chrome()中添加executable_path参数,参数value = chromedriver.exe文件所在路径,示例: from selenium import webdriver chrome_driver_path

    2024年02月11日
    浏览(59)
  • Selenium WebDriver提供By.CSS_SELECTOR定位元素方法

    `By.CSS_SELECTOR` 是 Selenium WebDriver 提供的一种定位元素的方法,它允许使用 CSS 选择器来定位页面上的元素。 以下是常见的 CSS 选择器语法: 1. **标签选择器(Tag Selector)**:通过元素的标签名选择元素。    - 示例:`p` 选取所有 p 标签的元素。 2. **类选择器(Class Selector)**:通

    2024年04月24日
    浏览(9)
  • selenium+python自动化测试之使用webdriver操作浏览器的方法

    selenium+python自动化测试之使用webdriver操作浏览器的方法

    WebDriver简介 selenium从2.0开始集成了webdriver的API,提供了更简单,更简洁的编程接口。selenium webdriver的目标是提供一个设计良好的面向对象的API,提供了更好的支持进行web-app测试。从这篇博客开始,将学习使用如何使用python调用webdriver框架对浏览器进行一系列的操作 打开浏览

    2024年01月25日
    浏览(15)
  • 前端js常用的一些工具类

    ip 封装ajax工具类 日期工具类 数据工具类 时间工具类 上述工具类extends.js 工具类

    2024年02月16日
    浏览(11)
  • selenium语法进阶+常用API

    selenium语法进阶+常用API

    目录 浏览器操作 浏览器回退,前进 与刷新 浏览器窗口设置大小  浏览器设置宽高  浏览器窗口最大化  浏览器控制滚动条  信息打印  打印页面的标题和当前页面的URL 定位一组元素  鼠标和键盘事件  键盘  鼠标  下拉框操作  通过索引定位(selectByIndex(索引值(从0开始

    2024年02月12日
    浏览(8)
  • selenium常用API的使用

    selenium常用API的使用

    目录 定位元素(findElement) CSS选择器定位  xpath选择器定位  CSS选择器和xpath选择器区别  操作测试对象  click:点击 sendKeys:输入文本框内容 clear:清除文本框内容  text:获取元素文本内容 getText()(获取一般文本内容) getAttribute() (获取属性(value)) submit:提交 submit和

    2024年02月14日
    浏览(9)
  • Selenium + webdriver manager遇到 “ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接”异常的解决方法

    今天使用selenium工具测试目标网页时,平时可以正常使用的代码突然报错: ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。 代码如下: 本来以为是每次运行脚本时,忘了关闭driver,导致对方服务器识别为恶意攻击,触发反爬虫机制,于是加上 并且按照别

    2024年02月15日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包