5

我是硒的新手,需要对一些东西进行一些澄清。我已经在 IDE 中尝试过clickclickAndWait虽然参考文献清楚地说明了每一个的含义,但当我将测试用例导出到 Python 时,似乎两者都在这里做同样的事情

driver.find_element_by_xpath("//li[@id='pa-u_8298348-bd']/a/span[2]").click() #click and wait
driver.find_element_by_link_text("IMVironments").click() #click

有人可以告诉我这里有什么区别吗?

4

3 回答 3

4

2年后,我知道了。但我一直在寻找相同的答案并找到了它。

来自Selenium 维基

当操作导致浏览器导航到另一个页面或重新加载当前页面时,始终使用 AndWait 替代方案。

换句话说,Selenium 的 webdriver 在使用 Click() 命令时,如果识别到页面加载,将固有地使用“AndWait”修饰符。

另请参阅界面 WebElement

无效点击()

单击此元素。如果这导致加载新页面,则此方法将尝试阻止,直到页面加载。

于 2014-10-15T17:29:54.093 回答
4

来自Selenium 文档

许多动作可以用“AndWait”后缀调用,例如“clickAndWait”。这个后缀告诉 Selenium 该操作将导致浏览器调用服务器,并且 Selenium 应该等待新页面加载。

于 2012-04-20T04:42:25.660 回答
0

我不确定这是否是 python 的事情,但看起来你只是在调用'click'而不是调用'clickAndWait'。我认为这也是 Trott 所指出的。话虽如此,我注意到 IE 通常比 Firefox 或 Chrome 更频繁地需要 AndWait,后者似乎只需要更好地处理点击(由于速度?)。您还可以在 Selenium 中创建自己的“等待”,这是我通常在危急情况下所做的(因为您需要与特定元素交互,因此您“等待”直到它存在)。

编辑:在您发表评论后,我现在明白您在说什么(对“clickandwait”评论有点困惑:P)。据我所知,AndWait 并不总是可用于 Python 绑定,我在这里发现了这一点,但我承认它并不是 100% 清楚,因为它在其他地方暗示了其他地方。也许这会有用吗?

wait_for_page_to_load(超时)[来源]

等待新页面加载。

您可以使用此命令代替“AndWait”后缀、“clickAndWait”、“selectAndWait”、“typeAndWait”等(仅在 JS API 中可用)。

将此作为编辑放置,因为评论太长了,对不起!

于 2012-04-23T00:33:39.030 回答