expect(locator).to_be_visible()locator.wait_for()有区别吗?我是否应该更喜欢其中一个?

我查过__doc__年代:

  • wait_for:当定位器指定的元素满足state选项时返回.(state默认为'visible').
  • to_be_visible:确保收件箱指向附加且可见的多姆 node .

尽管如此,还不是很清楚.定位器是否可能可见但不连接?如果是这样,如果我确定所定位的元素已连接,它们会相等吗?

推荐答案

定位器是否可能可见但不连接?

不,这不可能.为了使元素可见,它需要附加到(文档中的)多姆树,并且具有非零的高度和宽度,在视图中,上面没有其他元素等.换句话说,visibleattached的子集,从某种意义上说,所有可见元素都必须附加,但并非所有附加元素都是可见的.

wait_for并不是一个明确的断言.这是一种定位器方法,可以让您阻止,直到满足特定的可见性/附件判定(文档中描述了各种选项).它可以用于没有expect的测试场景,但这有点不寻常.主要用例是当您希望元素处于某种附加/可见性状态但没有对其采取特定操作时.

由于大多数定位器操作都是自动等待的,因此在浏览器自动化中通常不需要wait_for个--只需使用自动等待操作,例如.click().fill().text_content()等.

to_be_visible是一个显式断言,表明元素已被附加且可见.您可以将其视为wait_for提供的功能的一个面向预期的子集.

一般来说,如果您正在编写测试(这是一个常见的断言),则使用to_be_visible,否则在极少数情况下,当您正在执行正常的浏览器自动化并且需要阻止直到元素可见而不采取行动(这相对不常见).

如果您正在编写期望附加元素但不关心可见性的测试,那么您可能会对to_be_attached感兴趣,它以断言形式提供了wait_for功能的另一部分.

有一些具有类似断言的trap ,例如to_be_hidden,在 compose 本文时,它的名称有点误导性,因为即使没有附加元素,它也会通过.详细分析请参阅this answer(您必须忽略其否决票--可能是报复性否决票.这是我所知的对行为差异的唯一彻底治疗).

Python相关问答推荐

使用LangChain拆分HTML文件并保存块

为什么图像结果翻转了90度?

用Python获取HTML Span类中的数据

为什么dict(id=1,**{id:2})有时会引发KeyMessage:id而不是TypMessage?

如何在Python中使用ijson解析SON期间检索文件位置?

无法使用equals_html从网址获取全文

如何才能知道Python中2列表中的巧合.顺序很重要,但当1个失败时,其余的不应该失败或是0巧合

Python上的Instagram API:缺少client_id参数"

如何让剧作家等待Python中出现特定cookie(然后返回它)?

scikit-learn导入无法导入名称METRIC_MAPPING64'

为什么这个带有List输入的简单numba函数这么慢

加速Python循环

无法定位元素错误404

Python—从np.array中 Select 复杂的列子集

优化器的运行顺序影响PyTorch中的预测

Odoo 16使用NTFS使字段只读

如果满足某些条件,则用另一个数据帧列中的值填充空数据帧或数组

使用groupby方法移除公共子字符串

索引到 torch 张量,沿轴具有可变长度索引

实现神经网络代码时的TypeError