2016-05-13 2 views
0

У меня нет идеи об этом, поэтому я бы хотел, чтобы вы дали мне несколько советов, если сможете.Selenium Python Загрузка страницы и скрипта (Firefox и IE)

Обычно, когда я использую Selenium, я пытаюсь выполнить поиск интересующего меня элемента, но теперь я решил разработать какой-то тест производительности, поэтому проверьте, сколько времени занимает определенная веб-страница (html, script и т. Д.). ..) загружать.

У вас есть идея узнать время загрузки html, script и т. Д. Без поиска определенного элемента страницы?

PS Я использую IE или Firefox

+0

Знаете ли вы заранее, какова базовая структура JavaScript? –

+0

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

ответ

1

Вы можете проверить, лежащую в основе яваскрипт рамки для активных соединений. Если активных подключений нет, вы можете предположить, что страница закончила загрузку.

Это, однако, требует, чтобы вы либо знали, в какой среде используется страница, либо что вы должны систематически проверять наличие разных фреймворков, а затем проверять наличие соединений.

def get_js_framework(driver): 
    frameworks = [ 
     'return jQuery.active', 
     'return Ajax.activeRequestCount', 
     'return dojo.io.XMLHTTPTransport.inFlight.length' 
    ] 

    for f in frameworks: 
     try: 
      driver.execute_script(f) 
     except Exception: 
      logging.debug("{0} didn't work, trying next js framework".format(f)) 
      continue 
     else: 
      return f 
    else: 
     return None 


def load_page(driver, link): 
    timeout = 5 
    begin = time.time() 

    driver.get(link) 
    js = _get_js_framework(driver) 

    if js: 
     while driver.execute_script(js) and time.time() < begin + timeout: 
      time.sleep(0.25) 
    else: 
     time.sleep(timeout) 
+0

Очень хорошо, спасибо большое;) Вместо этого как я могу проверить, когда закончите загрузить весь HTML-код? есть что-то подобное? –