迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在Python中添加Selenium Web Driver等待

作者:迹忆客 最近更新:2023/07/02 浏览次数:

本文将介绍在Python中在Selenium Web驱动程序中添加等待的示例。


Python Selenium Web 驱动程序等待

大多数 Web 应用程序都使用 AJAX 技术。 因此,网页上存在的不同元素需要不同的时间间隔才能完全上传,因为硒在网页上存在之前无法找到任何文本。

我们可能会发现某些应用程序的网页在上传之前并不存在特定文本。 这会在测试应用程序时产生错误。

这个问题可以通过等待来解决。 这些等待在网页上搜索元素或任何其他操作时提供了灵活性。

Selenium Web 驱动程序提供两种类型的等待。 第一个是隐式等待,第二个是显式等待。

本文讨论了这两种等待类型的详细信息。


Selenium Web 驱动程序中的隐式等待

由于网速慢或网站响应慢,有时我们需要等待几秒钟才能获得所有结果。 对于这种情况,隐式等待效果最好。

隐式等待告诉 Web 驱动程序在特定时间轮询 DOM,同时查找元素,以便在我们的 Web 驱动程序获取元素时使所有元素可用。 该进程的默认设置为 0。

一旦我们设置了隐式等待,它将持续到 Web 驱动程序对象的生命周期。

只要我们运行相同的网络驱动程序而不关闭或重新启动并更改等待值,它就会是相同的量。

让我们来看一个示例,我们将访问一个网站并等待 10 秒钟,然后单击“关于我们”页面链接,如下所示。

示例代码:

# python
from selenium import webdriver

ChromeDriver = webdriver.Chrome()

ChromeDriver.implicitly_wait(10)

ChromeDriver.get("https://www.inventicosolutions.com/")

getElemByLink = ChromeDriver.find_element_by_link_text("About Us")

getElemByLink.click()

输出:

Python 中的 Selenium Web 驱动程序等待示例

从上面的示例中可以看到,加载页面后,它等待了整整 10 秒,然后才转到“关于我们”页面。


Selenium Web 驱动程序中的显式等待

显式等待是一种定义为等待特定条件发生并在代码中进一步处理的代码类型。 显式等待的极端情况是 time.sleep()。

这将等待的条件设置为精确的时间段。

一些适当的方法可以帮助我们编写显式的代码。 显式等待是使用 Web 驱动程序等待类并与 Expected_conditions 相结合来实现的。

如下所示,让我们看一个示例,其中我们将使用显式等待而不是隐式等待。

示例代码:

# python
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ExpectedCond

chromeDriver = webdriver.Chrome()

chromeDriver.get("https://inventicosolutions.com")

getElembyLinkText = WebDriverWait(chromeDriver, 10).until(ExpectedCond.presence_of_element_located((By.LINK_TEXT, "About Us")))

getElembyLinkText.click()

输出:

Python 中的 Selenium Web 驱动程序显式等待示例

上述代码的超时值为 10 秒。 Web 驱动程序将等待 10 秒,然后抛出超时异常。

应用程序的网页地址(URL)和文本元素可以根据要求用给定的代码编写。

Web 驱动程序等待(显式等待中使用的工具之一)具有这种内置质量,每 500 毫秒检查一次预期条件,直到成功找到文本。

Python 中等待的预期条件

这些条件在自动化 Web 浏览器时最常用,并且在 Web 驱动程序中预定义。 这些条件包括:

  • title_is
  • title_contains
  • presence_of_element_located
  • visibility_of_element_located
  • visibility_of
  • presence_of_all_elements_located
  • text_to_be_present_in_element
  • text_to_be_present_in_element_value
  • frame_to_be_available_and_switch_to_it
  • invisibility_of_element_located
  • element_to_be_clickable
  • staleness_of
  • element_to_be_selected
  • element_located_to_be_selected
  • element_selection_state_to_be
  • element_located_selection_state_to_be
  • alert_is_present

我们可以通过导入以下库将这些预期条件包含在我们的代码中。

# python
from selenium.webdriver.support
import expected_conditions as ExpectedCond

Python 中的自定义等待条件

当上述方法均不能满足用户的要求时,可以创建自定义等待条件。 自定义条件是使用带有 call() 方法的类创建的。

如下所示,让我们看一个示例,在该示例中我们将创建一个自定义条件并尝试让我们的程序等待几秒钟。

示例代码:

# python
class ElementWithClass(object):
    def __init__(self, location, className):
        self.location = location

        self.className = className

    def __call__(self, ChromeDriver):
        findElem = ChromeDriver.find_element(*self.location)

        if self.className in findElem.get_attribute("class"):
            return findElem
        else:
            return False

        wait = WebDriverWait(ChromeDriver, 10)
        findElem = wait.until(element_has_css_class((By.ID, 'myId'), "myClass"))

如果找到该元素,此代码将为用户提供 true,否则返回 false。

因此,我们通过一些示例讨论了在 Python 中添加等待的不同方法。 我们希望您喜欢这个主题并从中学到一些东西。

上一篇:Selenium Python 中的动作链

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Selenium Python 中的动作链

发布时间:2023/07/03 浏览次数:159 分类:Python

动作链对象用于在 Python 中实现动作链。 动作链对象可以将所有动作存储在队列中,队列通过调用 perform() 函数来执行所有存储的操作。如何在 Selenium Python 中创建一个简单的动作链对象

Python Selenium 刷新页面

发布时间:2023/07/03 浏览次数:189 分类:Python

我们将学习如何使用 Selenium 在 Python 中刷新网页。在 Python 中安装 Selenium 要在本地计算机上安装 Selenium for Python,您可以在命令行界面 (CLI) 中使用著名的 pip 命令,如下所示。

使用 Selenium Python 检查元素是否存在

发布时间:2023/07/03 浏览次数:91 分类:Python

本文向您展示如何使用其 Python 客户端和 API 检查某个元素是否存在于 Selenium 中。使用 find_element() 使用 Selenium Python 检查元素是否存在

Python 中的 Schedule

发布时间:2023/07/03 浏览次数:194 分类:Python

本篇文章将介绍 Python 中的 Schedule 包,以在特定时间间隔后定期安排作业。Schedule是Python中的一个轻量级进程调度程序库 在 Python 中安装 Schedule 库

Python 中的工厂模式

发布时间:2023/07/03 浏览次数:174 分类:Python

This tutorial demonstrates the use of `factory design pattern` in Python.工厂设计模式属于创意设计模式范畴。 创建设计模式提供了许多对象创建技术,从而提高了代码的可重用性和灵活性。在Python中实现工厂

使用 Python 创建端口扫描器

发布时间:2023/07/03 浏览次数:58 分类:Python

本篇文章将介绍如何在 Python 中创建端口扫描器。使用 Python 创建端口扫描器 首先,让我们了解端口的基础知识。 端口是网络中的端点,通过它在服务器和客户端之间传递一些信息。

Python 中的多态性

发布时间:2023/07/03 浏览次数:58 分类:Python

本篇文章将介绍如何在 Python 中实现多态性。Python 中的多态性 理解这一点的最佳方法是使用 len() 函数。 对于不同的对象,该函数有不同的解释。

列出 Python 的事件相关包

发布时间:2023/07/03 浏览次数:190 分类:Python

Python 编程语言具有包,它们是模块的集合。 本文将列出 Python 编程语言的事件相关包。列出 Python 的事件相关包 不同的 Python 包使用不同的事件术语。

用 Python 创建 turtle 图形

发布时间:2023/07/02 浏览次数:139 分类:Python

本篇文章将讨论 Python 中海龟图形的一些示例。在 Python 中创建图形输出屏幕 我们从创建输出屏幕开始。 turtle.getscreen() 方法初始化一个变量为屏幕,然后弹出一个屏幕。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便