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

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方法?这很可能是一些简单和基本的东西,但我就是搞不懂。 以下是我在网上找到的一个例子:

  • 问题内容: 这是此问题的后续操作- 想创建一个表单填充器-java,jsp,html是否足够?。我反复在网站上填写表格(例如,预约私人牙医)。 1-循环。对于每次迭代,除“下拉框-状态”的值外,所有数据均相同。 例如。每次迭代中“文本框-名称”,“文本框-年龄”保持不变。但是,状态下拉列表会在迭代中更改为NY,TX,CA。 2-如果最后一页中出现某些文本,请执行一项操作(发送邮件)。 我该如何做s

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