Как авторефрешировать chromeDriver с селеном?
Ранее я использовал Chrome Auto Refresh plug in. Однако теперь мой код имеет несколько экземпляров ChromeDriver, открывающихся и закрывающихся, и я не могу использовать автоматическое обновление. Кроме того, это довольно хлопотно установить автоматическое обновление на новых компьютерах.
Есть ли способ обновить драйвер (имитировать F5, скажем, каждые 15 секунд, если драйвер не меняется, остается неподвижным) с помощью Selenium, аналогичного Google Auto Refresh?
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 сайта"); водитель.направлять().обновить ();
Мы можем использовать класс actions и имитировать F5 press
Actions act = новые действия (драйвер); действие.SendKeys(Ключи.F5).perform ();
Если вы пишете модульные тесты, которые должны выполняться, как если бы вам нужно было каждый раз открывать/обновлять новый сеанс браузера, вы можете использовать метод с аннотациями перед:
@Before public void refreshPage() { driver.navigate().refresh(); }Если все тесты по отдельности успешны (зеленый цвет), но проваливаются все вместе, причина может также заключаться в том, что вам нужно подождать, пока некоторые ресурсы будут доступны на странице, поэтому вам также нужно обработать его, установив тайм-аут следующим образом:
[2]] 320 - это долгий срок, но вы должны убедиться, что даете достаточно времени, чтобы получите все, что требуется для проверки.public WebElement getSaveButton() { return findDynamicElementByXPath(By.xpath("//*[@id=\"form:btnSave\"]"), 320); }
Comments