2017-07-17 42 views

回答

2

您可以使用presence_of_element_locatedexplicit waiting用CSS选择器来定位元素:

from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.common.exceptions import TimeoutException 

try: 
    element = WebDriverWait(driver, 10).until(
     EC.presence_of_element_located((By.CSS_SELECTOR, "option[value='123']")) 
    ) 
    print("Option loaded") 
except TimeoutException: 
    print("Time exceeded!") 

# Do Your Stuff 
+1

感谢这么多的解决方案。在“最后”中,我打印出page_source,并且该页面是我想要的。但是,在打印出页面后,有一条错误消息: raise TimeoutException(message,screen,stacktrace) selenium.common.exceptions.TimeoutException:消息: –

+0

@jhhPhi嘿,对不起,看起来像我误用'finally'语句,现在应该这样做。我很高兴它有帮助,而且,如果它有帮助并解决了您的问题,您应该[接受答案](https://meta.stackexchange.com/a/5235),点击upvotes旁边的绿色标记。 –

+0

“超出时间”打印出来。这是不是意味着在特定时间内,该声明永远不会回复真实?因为它没有返回true,所以它捕获TimeoutException,然后继续执行代码。当代码循环10秒时,我的页面已经完全加载,所以我得到了我想要的页面。没有? –