当前位置: 首页 > 面试题库 >

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

司空俊悟
2023-03-14
问题内容

我将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")));

我想等 要么 返回一个结果(div.some_result “未找到”字符串。那可能吗?有点儿:

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:
                if fn(driver): return True
            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。的try:块为奇数。我很困惑,因为有些EC返回true /
false,而另一些EC会为False抛出异常。异常是由WebDriverWait捕获的,所以我的AnyEc事情产生了奇怪的结果,因为第一个抛出异常的事件意味着AnyEc没有继续进行下一个测试



 类似资料:
  • 问题内容: 我将Selenium 2 / WebDriver与Python API结合使用,如下所示: 我想等 要么 返回一个结果() 或 “未找到”字符串。那可能吗?有点儿: 我知道我可以使用CSS选择器()来做到这一点,但是有没有办法使用Selenium预期条件方法来做到这一点? 问题答案: 我这样做是这样的: 然后像这样… 显然,同样实现一个类也是微不足道的。 Nb。的块为奇数。我很困惑,因

  • Selenium提供了显式的等待功能来处理(例如)当您想要对尚未可单击的元素执行操作时的情况。 语法如下: 这告诉程序等待,直到某个元素(通过其ID定位)可以单击。 element_to_be_clickable()调用内部函数读取指定的参数。在这种情况下,它在DOM中搜索与ID:相对应的元素。 但是,我不能直接将对象传递到函数中,因为它在内部调用中失败。 在处理本身时,有没有一种方法可以使用这些

  • 需要一些帮助。 我正试图登录Flipkart并通过selenium购买第一部Iphone。 然而,我被困在下面提到的页面 https://www.flipkart.com/apple-iphone-6.../p/itmen2yynt6bz3gg... 我尝试单击比较复选框、16GB按钮、立即购买按钮和添加到购物车按钮,但所有操作都无法定位错误。 任何帮助都将不胜感激。 提前感谢 我使用了隐式等待和

  • 我找不到答案,我想了解我们为什么这样做,所以:为什么在创建自定义ExpectedConditions时,我们必须重写apply方法?这很可能是一些简单和基本的东西,但我就是搞不懂。 以下是我在网上找到的一个例子:

  • 问题内容: 在Python中编写selenium测试时,我习惯于使用Explicit Waits来等待页面加载,或等待元素可见或可点击等: 这里的关键概念是提供等待的 期望条件 ,有多种类型: 等等 与使用带有硬编码时间间隔的s 相比,使用期望条件使代码更清洁,更可靠。 现在,我们正在将端到端测试基础架构转换为很多。 是否有类似的量角器,因为在或 ?如果不是,显式等待in中条件的规范方法是什么?

  • 当试图显式地等待一个元素使用预期条件变得可见时,Visual Studio警告我,它现在已经过时,很快就会从Selenium中删除。 实现相同结果的当前/新方法是什么?