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

Robotframework:Selenium2Lib:等到(…)关键字

西门品
2023-03-14
问题内容

我正在使用Selenium2 w RF测试相当复杂的Web应用程序的GUI。由于我确实在元素加载方面遇到了一些失败,因此想知道关键字之间的区别是什么:

等待直到元素启用 定位器 等待直到元素可见 定位器 等待页面包含元素 定位器

当我想检查页面的元素是否已完全加载并可以使用时,每个关键字的具体含义是什么?有没有关键字可以检查是否已加载整页?


问题答案:

我不知道您所说的“范围”是什么意思。它们都在同一范围内工作。

Wait Until Element Is Enabled假定该元素存在于页面上,并且将等待直到启用该元素(非只读且未禁用)。如果该元素不存在,它将立即失败(或在超时后,如果您有隐式等待)

Wait Until Element is Visible假定该元素存在于页面上,并将等待直到该元素可见。如果该元素不存在,它将立即失败(或在超时后,如果您有隐式等待)

Wait Until Page Contains Element不对该元素做任何假设。它等待直到元素实际在页面上,无论它是可见,不可见,启用还是禁用。它不需要隐式等待,因为此关键字是显式等待。

如果我想检查页面元素是否已完全加载并准备使用,哪种关键字最可靠?

最完整的解决方案是等待它出现在页面上,等待它可见,然后等待它被启用。

如果该元素始终在页面上,则可以跳过第一个检查(即:如果没有可创建或删除该元素的JavaScript)。

如果该元素将始终处于启用状态,则无需等待它变为启用状态(即:如果没有JavaScript来禁用或启用该元素)

对于简单的静态页面,实际上只需要检查一个元素是否可见。甚至通常不需要这样做,因为硒不会在打开页面之前从打开页面返回。当页面是动态的时,问题就来了。也就是说,在加载html之后,当有javascript可以更改页面上的内容以及它是可见的还是启用的。

有没有关键字可以检查是否已加载整页?

不,因为“加载”在不同的应用程序中可能意味着不同的含义。document.readyState完成加载html后,浏览器会将变量设置为“
complete”。您可以在机器人中检查类似的内容Wait for condition return window.document.readyState === 'complete'。同样,如果您在页面上运行了javascript,这可能是不够的,因为在加载初始HTML之后页面可能会更改。

没有适用于所有应用程序的单一解决方案。您需要了解应用在启动时的工作方式,并进行适当的检查。

有关如何知道何时使用原始python和selenium完全加载页面的详细讨论,请参阅博客文章如何在单击后使Selenium等待页面加载



 类似资料:
  • 问题内容: 深入研究文档后,我找不到以下问题的答案: 如以下示例所示,是否有任何理由反对使用引用当前对象? 问题答案: 没有 技术 原因不这样做。 它确实违反了此处说明的一般准则: 不要使用诸如“我”,“此”或“自我”之类的通用名称,它们是面向对象语言的典型标识符,这些标识符更加强调方法而非功能。 我还想补充一点,在使用(或)的语言中,它始终是一个 指针 。对于Go中的方法接收者,不一定是这种情况

  • 问题内容: C#中 var 关键字的一种用法是隐式类型声明。 var 的Java等效语法是什么? 问题答案: 空无一人。las,您必须输入完整的类型名称。 编辑:发布7年后,Java 10中添加了局部变量的类型推断(带有)。 编辑:发布6年后,从下面收集一些评论: C#使用关键字的原因是因为在.NET中可能有没有名称的Types。例如: 在这种情况下,不可能给赋予正确的类型。6年前,这在Java中

  • 本文向大家介绍iOS 说明并比较关键词:strong, weak, assign, copy等等相关面试题,主要包含被问及iOS 说明并比较关键词:strong, weak, assign, copy等等时的应答技巧和注意事项,需要的朋友参考一下 strong表示指向并拥有该对象。其修饰的对象引用计数会增加1。该对象只要引用计数不为0则不会被销毁。当然强行将其设为nil可以销毁它。 weak表示指

  • 问题内容: 我知道Java本身没有直接的等效项,但也许是第三方? 真的很方便。当前,我想实现一个迭代器,该迭代器生成树中的所有节点,这大约是带有yield的五行代码。 问题答案: 我知道的两个选项是2007年的Aviad Ben Dov的infomancers- collections库 和2008年的Jim Jimler的YieldAdapter库 (在另一个答案中也提到了)。 两者都允许您使用

  • 下面是 Java 里面的关键字。不能使用以下任一作为您的程序标识符。关键字 const 和 goto 语句被保留,即使他们目前尚未使用。true, false, 和 null 似乎是关键字,但它们实际上是字面值;你不能使用它们作为你的程序标识符。 abstract continue for new switch assert*** default goto*

  • 关键字是不能做为变量的。Lua 的关键字不多,就以下几个: and break do else elseif end false for function if in local nil not or repeat return then true until while