3

我正在将 selenium webdriver 与 python 一起使用,以便找到一个元素并单击它。这是代码。我将“数字”传递给此代码的方法,但这不起作用。我在浏览器上看到找到了该元素,但它没有单击该元素。

subIDTypeIcon = "//a[@id='s_%s_IdType']/img" % str(number)
self.driver.find_element_by_xpath(subIDTypeIcon).click()

然而,我尝试放置'self.driver.find_.....'两次,令我惊讶的是它有效

subIDTypeIcon = "//a[@id='s_%s_IdType']/img" % str(number)
self.driver.find_element_by_xpath(subIDTypeIcon).click()
self.driver.find_element_by_xpath(subIDTypeIcon).click()

我在远程服务器上打开了浏览器,因此有时会出现超时问题。

有没有合适的方法来完成这项工作?为什么将相同的语句放置两次时它会起作用

4

1 回答 1

2

这是一个常见问题,也是创建抽象的每页帮助程序类的主要原因。您通常需要一个循环来尝试在几秒钟内找到一个元素,以便浏览器可以更新 DOM,而不是盲目地查找元素。

第二个版本通常有效,因为开始加载新页面不会使 DOM 无效。这只发生在远程服务器开始向浏览器发送足够多的新文档时。当您使用浏览器时,您可以自己看到这一点:页面不会在您单击链接的同时变为空白。相反,他们会停留一段时间。

于 2013-09-25T08:36:47.920 回答