Selenium 预期条件 - 可以使用“或”吗?

2024-03-31

我将 Selenium 2 / WebDriver 与 Python API 一起使用,如下所示:

from selenium.webdriver.support import expected_conditions as EC

# code that causes an ajax query to be run

WebDriverWait(driver, 10).until( EC.presence_of_element_located( \
    (By.CSS_SELECTOR, "div.some_result")));

我想等待either要返回的结果(div.some_result) or“未找到”字符串。那可能吗?有点儿:

WebDriverWait(driver, 10).until( \
    EC.presence_of_element_located( \
         (By.CSS_SELECTOR, "div.some_result")) \
    or 
    EC.presence_of_element_located( \
         (By.CSS_SELECTOR, "div.no_result")) \
);

我意识到我可以使用 CSS 选择器来做到这一点(div.no_result, div.some_result),但是有没有办法使用 Selenium 预期条件方法来做到这一点?


我是这样做的:

class AnyEc:
    """ Use with WebDriverWait to combine expected_conditions
        in an OR.
    """
    def __init__(self, *args):
        self.ecs = args
    def __call__(self, driver):
        for fn in self.ecs:
            try:
                res = fn(driver)
                if res:
                    return True
                    # Or return res if you need the element found
            except:
                pass

然后称呼它为...

from selenium.webdriver.support import expected_conditions as EC
# ...
WebDriverWait(driver, 10).until( AnyEc(
    EC.presence_of_element_located(
         (By.CSS_SELECTOR, "div.some_result")),
    EC.presence_of_element_located(
         (By.CSS_SELECTOR, "div.no_result")) ))

显然,实现一个AllEc类也一样。

Nb. the try:块是奇数。我很困惑,因为有些 EC 返回 true/false,而其他 EC 会抛出NoSuchElementException为假。异常被 WebDriverWait 捕获,所以我的 AnyEc 东西产生了奇怪的结果,因为第一个抛出异常意味着 AnyEc 没有继续进行下一个测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium 预期条件 - 可以使用“或”吗? 的相关文章

  • 如何使用固定的 pandas 数据框进行动态 matplotlib 绘图?

    我有一个名为的数据框benchmark returns and strategy returns 两者具有相同的时间跨度 我想找到一种方法以漂亮的动画风格绘制数据点 以便它显示逐渐加载的所有点 我知道有一个matplotlib animat
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • IRichBolt 在storm-1.0.0 和 pyleus-0.3.0 上运行拓扑时出错

    我正在运行风暴拓扑 pyleus verbose local xyz topology jar using storm 1 0 0 pyleus 0 3 0 centos 6 6并得到错误 线程 main java lang NoClass
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 如何使用google colab在jupyter笔记本中显示GIF?

    我正在使用 google colab 想嵌入一个 gif 有谁知道如何做到这一点 我正在使用下面的代码 它并没有在笔记本中为 gif 制作动画 我希望笔记本是交互式的 这样人们就可以看到代码的动画效果 而无需运行它 我发现很多方法在 Goo
  • Python - 字典和列表相交

    给定以下数据结构 找出这两种数据结构共有的交集键的最有效方法是什么 dict1 2A 3A 4B list1 2A 4B Expected output 2A 4B 如果这也能产生更快的输出 我可以将列表 不是 dict1 组织到任何其他数
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例

随机推荐

  • 启动python解释器时显示的消息的含义

    我知道这肯定是基本信息或知识 但我想知道 并且找不到答案 执行后立即显示什么信息或含义是什么python命令并启动解释器 例如 在这种情况下这意味着什么 Win32 上的 Python 3 8 7 tags v3 8 7 6503f05 2
  • Curl 返回 http 状态代码以及响应

    我使用curl 获取http 标头来查找http 状态代码并返回响应 我使用命令获取 http 标头 curl I http localhost 为了获得响应 我使用命令 curl http localhost 一旦使用 I 标志 我就只得
  • JUnit - 初始化程序错误中的异常

    我正在尝试使用静态方法测试一个类 但在这一行中出现错误 FormReferenceDataPopulator target new FormReferenceDataPopulator 这是失败的痕迹 java lang Exception
  • 防止导航到同一片段

    我正在使用带有 BottomNavigationView 的 Android 导航 jetpack 库 我已经实现了 NavHost NavGraph 和我的片段 当我使用操作进行导航时 一切都按预期进行 我使用以下代码来设置一切 val
  • 如何在 Angular 4 中创建分页组件? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个 API 端点 例如 list students page 5 rows 10带分页参数page and size 我想创建一个 a
  • 匹配平衡括号的正则表达式

    我需要一个正则表达式来选择两个外括号之间的所有文本 Example START TEXT text here possible text text possible text more text END TXT Result text he
  • 如何构建一个在用作 constexpr(如断言)时行为不同的自定义宏?

    从 C 14 开始 断言宏可以在函数中使用 即使它们被定义为 constexpr 我知道这与它的计算结果为 true 有关 但我无法弄清楚实际的代码是什么样子 具体来说 如何构建一个宏 该宏在运行时评估的 constexpr 函数中运行时打
  • PL/SQL 逗号分隔列表;删除重复项并放入数组中

    我有一个以逗号分隔的列表作为 PL SQL 过程中的字符串 我需要 删除重复项 将列表放入数组中 我发现了多种方法可以做到其中之一 但不能同时做到两者 有什么帮助吗 有一个众所周知的 SQL 技巧可以将逗号分隔的列表转换为行 只需使用这个技
  • 限制 .map 循环中的项目

    我想问一下如何限制我的 map例如 仅循环到 5 个项目 因为当前当我访问 api 时 它返回 20 个项目 但我只想显示 5 个 我发现大多数情况只是循环整个对象数组 而不是将其限制为多个项目 注意 我无法控制 API 因为我只是使用 m
  • libtool:i686-pc-mingw32 共享中不允许未定义的符号

    我正在使用自动工具作为我的库的构建系统 最近库被移植到Windows 尽管我遇到了一个奇怪的错误 但库编译和链接成功 配置和make后只有静态库 除了警告之外 一切看起来都很好libtool libtool undefined symbol
  • 在 C# 中,有没有办法在运行时确定类的成员?

    假设我有一个名为 foo 的类 它有 3 个公共成员 foo1 foo2 和 foo3 现在假设我正在编写一个函数 它将 foo 类的实例作为参数 但是当我编写这个函数时 我不知道它有哪些公共成员 有没有办法让我在运行时确定它具有公共成员
  • React.js 通过 Router 传递参数,而不是在 URL 中

    您好 我想从一个页面移动到另一页面并传递参数search and type 如果 URL 中没有这些参数 我可以使用 React Router 来实现此目的吗 我正在看这个https github com rackt react route
  • 如何更改应用栏颤动上的文本和图标的颜色

    我在更改颤动应用栏上的文本和图标小部件的颜色时遇到问题 我已经在材料应用程序中尝试过主题 但它不起作用 这是在哪里工作 title Text Profile style TextStyle color Colors black 但我想将其应
  • 在窗口中的标题栏内/上方添加用户控件

    在 WPF 中 我想在窗口的标题栏中 上方添加一个 userControl 如下所示 红色部分是UserControl 绿色部分是标题栏 现在我希望能得到你的一些建议 需要扩展Window类或者只是自定义Window的样式 最好提供源码 您
  • MVC 2 AntiForgeryToken - 为什么对称加密 + IPrinciple?

    我们最近将解决方案更新为 MVC 2 这更新了AntiForgeryToken作品 不幸的是 这不再适合我们的 AJAX 框架 问题是 MVC 2 现在使用对称加密来编码有关用户的一些属性 包括用户的Name财产 来自IPrincipal
  • 我如何消除 glu.h 中的这些编译器错误?

    尝试使用这个tutorial http www opengl tutorial org beginners tutorials 在带有 netbeans 和 cygwin 4 8 1 的 64 位 Windows 8 上 我收到很多这样的错
  • 如何解决 xcode 5 中的苹果 LLVM 5.0 错误?

    我在模拟器和设备上运行我的应用程序没有任何问题 突然我收到这个错误 fatal error file Applications Xcode app Contents Developer Platforms iPhoneOS platform
  • SVN加密密码存储

    我在 Ubuntu 机器上安装了 SVN 但我无法理解某些事情 每当我从终端检查某些内容时 我都会收到有关保存未加密密码的错误 ATTENTION Your password for authentication realm lt gt S
  • 在 macOS 上的 CLion 中导入 Bazel 项目失败

    我在 CLion 上安装了 Bazel 插件 并尝试导入新的 Bazel C 项目 但我不断遇到这些错误 tensorflow gpu 1 8 0lft1 cp27 cp27mu linux x86 64 whl 在此平台上不受支持的轮子
  • Selenium 预期条件 - 可以使用“或”吗?

    我将 Selenium 2 WebDriver 与 Python API 一起使用 如下所示 from selenium webdriver support import expected conditions as EC code tha