我正在使用 Python 3.7 和 Selenium 3.141.0。在加载缓慢的页面上,使用这样的代码来捕获 DOM 对象通常会有所帮助:
myDiv = WebDriverWait(driver, 60).until(
expected_conditions.presence_of_element_located((By.CSS_SELECTOR, "div.myClass")))
该代码在整个页面中搜索<div>
具有 class 的元素myClass
。但有时我只想presence_of_element_located()
在给定的 WebElement 对象中使用搜索。例如,基于上面的代码,我想运行这样的代码:
myDiv2 = WebDriverWait(driver, 60).until(
myDiv.presence_of_element_located((By.CSS_SELECTOR, "div.myClass2")))
第二个代码块不起作用;我收到一条错误消息,可以理解地告诉我,这presence_of_element_located()
不是 WebElement 对象的方法。如果我替换myDiv.presence_of_element_located()
为myDiv.find_element()
. 在这种情况下,我收到一条无效参数消息:
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: 'using' must be a string
有没有办法使用等待和预期条件来测试元素的存在,或者以其他方式搜索元素,同时将搜索限制为 WebElement 对象,例如myDiv
?从某种意义上说,这可以通过编写复杂的 CSS 或 Xpath 选择器来完成——但我想避免这种情况。
我已经检查了 SO 帖子和Selenium documentation of expected conditions,但我没有找到任何与这个问题相关的内容。