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

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

严烨
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。的块为奇数。我很困惑,

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

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

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

  • 我第一次做硒测试。在主页上,我调用了一些AJAX,我希望Selenium等待元素加载完成。我不确定它是否有效,但我只是键入selenium,waitForCondition可以选择。 无论我选择什么,它总是返回“false”。我现在连等待条件都不工作吗? 我如何测试它是否有效?在这些代码中我做错了什么? 如果由自己的类实现,则返回“true” isElementPresent(By.xpath(“

  • 问题内容: 我想在CSS中使用条件。 我的想法是,当站点运行以生成正确的样式表时,我将替换一个变量。 我想要它,以便根据此变量更改样式表! 看起来像: 能做到吗?你怎么做到这一点? 问题答案: 不是传统意义上的,但如果可以访问HTML,则可以为此使用类。考虑一下: 并在您的CSS文件中: 这就是 CSS的 方法。 然后是CSS预处理程序,如Sass。您可以在此处使用条件语句,如下所示: 缺点是,您