1

我正在尝试对具有类似 AJAX 功能的网站进行很好的编码,并使用 pysaunter ( http://element34.ca/products/saunter/pysaunter )。

当我使用可用的同步方法 wait_for_available 时,可能不正确,我的代码或多或少地做了我想要的,但是 Selenium 服务器节点在类尚不存在时抛出如下断言:

org.openqa.selenium.remote.ErrorHandler$UnknownServerException:无法找到元素:{“method”:“css selector”,“selector”:“.ng-scope.ready.idle”}

我想使用WebDriverWait,我想是这样的:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(self.driver, 30).until(EC.presence_of_element_located((By.CLASS_NAME,'idle')))

但是当我尝试这样做时,我仍然从 Firefox 远程 webdriver 中得到上述异常,从 chrome 远程 webdriver 中得到以下异常:

13:09:22.525 WARN - 例外:没有这样的元素(会话信息:chrome=29.0.1547.76)(驱动程序信息:chromedriver=2.0,平台=Mac OS X 10.8.5 x86_64)(警告:服务器没有提供任何堆栈跟踪信息)

在使用 Python 运行远程 webdriver 时,在寻找可能不会立即出现的元素时,是否可以避免 Selenium Server 的异常?

谁能指出我从 pysaunter 使用 WebDriverWait 的正确方法的示例?我从这里开始: http: //docs.seleniumhq.org/docs/04_webdriver_advanced.jsp 和(另请参阅 2012 年 7 月 9 日发布的 Element 34 博客“WebDriverWait 和 Python”)

TIA

4

1 回答 1

0

如果您查看 WebDriverWait 代码,您将看到您可以为构造函数提供一个要忽略的异常列表。一个这样的列表是预定义的“IGNORED_EXCEPTIONS”,它设置为 [NoSuchElementException]。因此,您可以将 'ignored_exceptions=IGNORED_EXCEPTIONS' 添加到 WebDriverWait 构造函数中,即:

WebDriverWait(self.driver, 30, ignored_exceptions=IGNORED_EXCEPTIONS).until(...)

然后这些异常将被忽略,它会继续尝试直到成功或超时。

于 2014-08-29T16:53:48.717 回答