显式等待作为另一个元素的子元素的元素

JRG*_*JRG 6 python selenium

如果您有一个 WebElement 对象,您可以像这样搜索它的子对象

element = WebElement(blah...)
element.find_element_by_id('blah')
Run Code Online (Sandbox Code Playgroud)

是否可以使用显式等待来做同样的事情,如

wait = WebDriverWait(self.driver, self.timeout)
element = wait.until(expectedCondition(locator))
Run Code Online (Sandbox Code Playgroud)

因此,我如何指定显式等待应仅搜索元素的子元素,而不是搜索整个 DOM?

Luc*_*ney 5

使用 python,until实际上只是针对所传递的驱动程序调用该方法。因此,事实上大多数驱动程序方法也是 webelement 方法,您实际上可以将 webelement 作为“驱动程序”传递给 WebDriverWait。

所以对于你的例子:

wait = WebDriverWait(webelement, self.timeout)
element = wait.until(expectedCondition(locator))
Run Code Online (Sandbox Code Playgroud)

或者,您可以只使用 lambda:

wait = WebDriverWait(self.driver, self.timeout)
element = wait.until(lambda d: webelement.find_element_by_id('blah'))
Run Code Online (Sandbox Code Playgroud)