Как авторефрешировать chromeDriver с селеном?



Ранее я использовал Chrome Auto Refresh plug in. Однако теперь мой код имеет несколько экземпляров ChromeDriver, открывающихся и закрывающихся, и я не могу использовать автоматическое обновление. Кроме того, это довольно хлопотно установить автоматическое обновление на новых компьютерах.



Есть ли способ обновить драйвер (имитировать F5, скажем, каждые 15 секунд, если драйвер не меняется, остается неподвижным) с помощью Selenium, аналогичного Google Auto Refresh?

543   3  

3 ответов:

Refresh-это встроенная команда.

driver = webdriver.Chrome()
driver.get("http://www.google.com")
driver.refresh()

Если у вас нет драйвера chrome, его можно найти здесь: https://code.google.com/p/chromedriver/downloads/list

Поместите двоичный файл в ту же папку, что и скрипт python, который вы пишете. (Или добавить его в путь или что-то еще, более подробная информация здесь: https://code.google.com/p/selenium/wiki/ChromeDriver )

Правка:

Если вы хотите обновить когда-либо 10 секунд или что-то еще, просто оберните строку обновления с помощью петля и задержка. Например:

import time
while(True):
    driver.refresh()
    time.sleep(refresh_time_in_seconds)

Если вы хотите обновить только ту страницу, которая не изменилась за это время, следите за страницей, на которой вы находитесь. driver.current_url - это url текущей страницы. Таким образом, если сложить все это вместе, то получится:

import time
refresh_time_in_seconds = 15
driver = webdriver.Chrome()
driver.get("http://www.google.com")
url = driver.current_url
while(True):
    if url == driver.current_url:
        driver.refresh()
    url = driver.current_url
    time.sleep(refresh_time_in_seconds)

Ну, есть два способа сделать это. 1. Мы можем использовать метод обновления

Водитель.get ("какой-то url сайта"); водитель.направлять().обновить ();

  1. Мы можем использовать класс actions и имитировать F5 press

    Actions act = новые действия (драйвер); действие.SendKeys(Ключи.F5).perform ();

Если вы пишете модульные тесты, которые должны выполняться, как если бы вам нужно было каждый раз открывать/обновлять новый сеанс браузера, вы можете использовать метод с аннотациями перед:

@Before
public void refreshPage() {
    driver.navigate().refresh();
}

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

public WebElement getSaveButton() {
    return findDynamicElementByXPath(By.xpath("//*[@id=\"form:btnSave\"]"), 320);
}
[2]] 320 - это долгий срок, но вы должны убедиться, что даете достаточно времени, чтобы получите все, что требуется для проверки.

Comments

    Ничего не найдено.