Selenium - Python - тот же код хорошо работает с Firefox, но на 10 минут медленнее с Chrome - PullRequest
0 голосов
/ 17 июня 2019

Я хочу нажать кнопку после того, как изображение будет видно / загружено, тест занимает 10 минут, чтобы запустить Chrome Vs 0: 00: 00.029671 с Firefox. Это слишком медленно, я бы предпочел запустить тест вручную. Как я могу иметь такое же время выполнения? я в отчаянии, отнимаю у меня дни ... с несколькими решениями кода из интернета

I upgrade google Chrome 75.0.3770.90 and ChromeDriver
I added some options to run chrome :(not very helpful in this case)
      options.add_argument('--no-sandbox')  
      options.add_argument('--disable-gpu')  
      options.add_argument('start-maximized') 
      options.add_argument('disable-infobars')
      options.add_argument("--disable-extensions")

connectionStatus = True

while connectionStatus == True:
    try:
        WebDriverWait(conn.driver, 10).until(ec.visibility_of_element_located(
            (By.CSS_SELECTOR, "img[src='../public/images//disconnect.png']")))
        element = conn.driver.find_element(By.CSS_SELECTOR, 'img[src="../public/images//disconnect.png"]')
        element.is_displayed

        print("disconnect")
        connectionStatus = False
    except NoSuchElementException as e:
        print("Waiting for M to disconnect from VW")
        time.sleep(10)
    except TimeoutException:
        print("TIMEOUT - Element not found: ")

    conn.driver.find_element(By.CSS_SELECTOR, "#btnSendUpd").click()

Исполнение:

Start:  2019-06-18 16:13:06.710734
TIMEOUT - Element not found: 
Diff =  0:05:00.004450
disconnect
Diff =  0:05:00.046355


NB: the code html contains only css , not ID to use findElementById

Windows 10 - 64bits(I use chromedriver 32bits-they say that is working on 64bits)
Selenium 3.141.0

1 Ответ

1 голос
/ 20 июня 2019

Мне сказали, что веб-сайт, который я тестирую, работает со скрытым iframe (программирование комет с помощью Javascript). Основной метод динамического веб-приложения заключается в использовании скрытого HTML-элемента iframe (встроенного фрейма, который позволяет веб-сайту встраивать один HTML-документ внутри другого). Этот невидимый iframe отправляется в виде фрагментированного блока, который неявно объявляет его бесконечно длинным (иногда называемым «навсегда фреймом»)

Я проверил "инструмент разработки" => Сеть: сценарий никогда не останавливается F12-Network-Chrome , и я думаю, что Chrome ждет его завершения, поэтому он слишком длинный (Firefox не делает)

В качестве обходного пути я добавил эту строку, чтобы Chrome не ждал загрузки страницы слишком долго:

driver.set_page_load_timeout (7)

Выполнение теперь занимает секунды:

Start:  2019-06-20 13:23:24.746351  
TIMEOUT - Element not found    
Diff =  0:00:07.004282    
disconnect    
Diff =  0:00:07.036196
...