我正在使用Selenium2 w RF测试相当复杂的Web应用程序的GUI。由于我确实在元素加载方面遇到了一些失败,因此想知道关键字之间的区别是什么:
等待直到元素启用 定位器 等待直到元素可见 定位器 等待页面包含元素 定位器
当我想检查页面的元素是否已完全加载并可以使用时,每个关键字的具体含义是什么?有没有关键字可以检查是否已加载整页?
我不知道您所说的“范围”是什么意思。它们都在同一范围内工作。
Wait Until Element Is Enabled假定该元素存在于页面上,并且将等待直到启用该元素(非只读且未禁用)。如果该元素不存在,它将立即失败(或在超时后,如果您有隐式等待)
Wait Until Element Is Enabled
Wait Until Element is Visible假定该元素存在于页面上,并将等待直到该元素可见。如果该元素不存在,它将立即失败(或在超时后,如果您有隐式等待)
Wait Until Element is Visible
Wait Until Page Contains Element不对该元素做任何假设。它等待直到元素实际在页面上,无论它是可见,不可见,启用还是禁用。它不需要隐式等待,因为此关键字是显式等待。
Wait Until Page Contains Element
如果我想检查页面元素是否已完全加载并准备使用,哪种关键字最可靠?
最完整的解决方案是等待它出现在页面上,等待它可见,然后等待它被启用。
如果该元素始终在页面上,则可以跳过第一个检查(即:如果没有可创建或删除该元素的JavaScript)。
如果该元素将始终处于启用状态,则无需等待它变为启用状态(即:如果没有JavaScript来禁用或启用该元素)
对于简单的静态页面,实际上只需要检查一个元素是否可见。甚至通常不需要这样做,因为硒不会在打开页面之前从打开页面返回。当页面是动态的时,问题就来了。也就是说,在加载html之后,当有javascript可以更改页面上的内容以及它是可见的还是启用的。
有没有关键字可以检查是否已加载整页?
不,因为“加载”在不同的应用程序中可能意味着不同的含义。document.readyState完成加载html后,浏览器会将变量设置为“ complete”。您可以在机器人中检查类似的内容Wait for condition return window.document.readyState === 'complete'。同样,如果您在页面上运行了javascript,这可能是不够的,因为在加载初始HTML之后页面可能会更改。
document.readyState
Wait for condition return window.document.readyState === 'complete'
没有适用于所有应用程序的单一解决方案。您需要了解应用在启动时的工作方式,并进行适当的检查。
有关如何知道何时使用原始python和selenium完全加载页面的详细讨论,请参阅博客文章如何在单击后使Selenium等待页面加载