2015-05-20 14 views
4

Я написал сценарий, который получает данные со страницы, но иногда на страницу требуется время для загрузки, и поэтому, когда он тянет html в объект супа, иногда он ничего не тянет, поскольку страница все еще необходимо закончить.python selenium ждать загрузки страницы

Я написал следующий код для ожидания завершения страницы.

def scrape_page(url): 
    browser.get(url)  
    try: 
     WebDriverWait(browser, 10).until(EC.presence_of_element_located(browser.find_element_by_id ("selection-box"))) 
     #Extract Source Code 
     html = browser.page_source; 
     soup = BeautifulSoup(html) 

Он работает

Но я получаю следующее сообщение об ошибке, когда я вызываю функцию;

TypeError: find_element() argument after * must be a sequence, not WebElement 

ответ

7

Я думаю, вы должны использовать presence_of_element_located так:

element = WebDriverWait(driver, 10).until(
     EC.presence_of_element_located((By.ID, "myDynamicElement")) 
    ) 

, как описано в manual.

+0

Я пробовал это оригинал совершенно, но получить глобальное имя ошибки By не определено. Единственное, что отличается от того, что я использую Chrome Driver вместо firefox –

+0

http://selenium-python.readthedocs.org/en/latest/api.html?highlight=#module-selenium.webdriver.common.by – sobolevn

+3

@GrantMcKinnonG Импорт 'By' перед использованием:' from selenium.webdriver.common.by import By' – WKPlus