我刚开始使用硒,但在阅读完文档之后,我无法理解如何正确执行等待(使用EC),直到webdriver标识元素的存在这是另一个元素的孩子。Selenium - 等到另一个元素的子元素存在
让我解释一下。我想,我可以在2个步骤访问特定的元素:
#find major group
listings = driver.find_element_by_id("new-listings");
#find subelement
checkbox = listings.find_element_by_class_name("listing-category")
这是确定的,但我想用EC以确保checkbox
存在。我不能用像水木清华:
checkbox = driver.wait.until(EC.presence_of_element_located(
(By.CLASS_NAME, "listing-category")))
只是因为有很多其他的类似listing-category
元素。可悲的是,找到checkbox
的唯一方法是通过嵌套的请求(如前所述)(它没有任何id或其他)。
如何正确表达它?
小额外问题:一般来说,使用EC而不是仅仅击中元素并希望它们已经可用,这对于性能来说是非常糟糕的吗? 99%的时间我不需要等待元素出现,所以我只是尝试处理浏览器响应不如平常的罕见情况。但我不确定EC是否会为创建事件处理程序等引入大量开销。
谢谢你,杰夫,是非常有意义! –