У меня была аналогичная проблема. Я исправил это, включив функцию «Windows PowerShell 2.0» в «Включить или отключить функции Windows». Обратите внимание, что эта функция включена по умолчанию, я вручную отключил ее несколько дней назад.
Я работаю над Windows 10 Pro 64bit, и такая же проблема была с Visual Studio 2015 и 2017 (32-битное и 64-битное приложение )
В Java или JavaScript:
driver.navigate().refresh();
Это должно обновить страницу.
Найдены различные подходы к обновлению приложения в селене: -
1.driver.navigate().refresh();
2.driver.get(driver.getCurrentUrl());
3.driver.navigate().to(driver.getCurrentUrl());
4.driver.findElement(By.id("Contact-us")).sendKeys(Keys.F5);
5.driver.executeScript("history.go(0)");
Для живого кода см. ссылку http://www.ufthelp.com/2014/11/Methods -Browser-Refresh-Selenium.html
Вот немного другая версия C #:
driver.Navigate().Refresh();
В Python существует способ для этого: driver.refresh()
. Возможно, это не то же самое в Java.
В качестве альтернативы вы могли бы driver.get("http://foo.bar");
, хотя я думаю, что метод обновления должен работать нормально.
driver.get("http://foo.bar")
, возможно, просто используйте driver.get(driver.current_url)
– Matt M.
20 April 2018 в 13:02
Вы также можете попробовать
Driver.Instance.Navigate().Refresh();
Важно отметить, что вызов driver.navigate (). refresh () иногда кажется асинхронным, то есть он не ждет завершения обновления, он просто «запускает обновление» и не выполняет блокировать дальнейшее выполнение, в то время как браузер перезагружает страницу.
Хотя это, похоже, происходит в меньшем числе случаев, мы полагали, что лучше убедиться, что это работает на 100%, добавив ручную проверку, будет ли страница действительно начал перезагружать.
Вот код, который я написал для этого в классе объектов основной страницы:
public void reload() {
// remember reference to current html root element
final WebElement htmlRoot = getDriver().findElement(By.tagName("html"));
// the refresh seems to sometimes be asynchronous, so this sometimes just kicks off the refresh,
// but doesn't actually wait for the fresh to finish
getDriver().navigate().refresh();
// verify page started reloading by checking that the html root is not present anymore
final long startTime = System.currentTimeMillis();
final long maxLoadTime = TimeUnit.SECONDS.toMillis(getMaximumLoadTime());
boolean startedReloading = false;
do {
try {
startedReloading = !htmlRoot.isDisplayed();
} catch (ElementNotVisibleException | StaleElementReferenceException ex) {
startedReloading = true;
}
} while (!startedReloading && (System.currentTimeMillis() - startTime < maxLoadTime));
if (!startedReloading) {
throw new IllegalStateException("Page " + getName() + " did not start reloading in " + maxLoadTime + "ms");
}
// verify page finished reloading
verify();
}
Некоторые примечания:
Опять же, в подавляющем большинстве случаев цикл do / while запускает одиночный время, потому что код за пределами навигации (). refresh () не выполняется, пока браузер фактически не перезагрузит страницу полностью, но мы видели случаи, когда на самом деле требуется секунд, чтобы пройти через этот цикл, потому что navigate (). refresh ( ) не блокировалось, пока браузер не завершил загрузку.
В python
Использование встроенного метода
driver.refresh()
или выполнения JavaScript
driver.execute_script("location.reload()")
Другой способ обновить текущую страницу с помощью selenium в Java.
//first: get the current URL in a String variable
String currentURL = driver.getCurrentUrl();
//second: call the current URL
driver.get(currentURL);
Используя это, будет обновлена текущая страница, например, щелкнув адресную строку браузера и нажав enter.
Альтернативный для обновления страницы (F5)
driver.navigate().refresh();
(или)
Actions actions = new Actions(driver);
actions.keyDown(Keys.CONTROL).sendKeys(Keys.F5).perform();
Существует также случай, когда вы хотите обновить только определенный iframe на странице, а не полную страницу.
Вы делаете следующее:
public void refreshIFrameByJavaScriptExecutor(String iFrameId){
String script= "document.getElementById('" + iFrameId+ "').src = " + "document.getElementById('" + iFrameId+ "').src";
((IJavaScriptExecutor)WebDriver).ExecuteScript(script);
}
driver.navigate().refresh()
в своем заголовке запроса говорит «no-cache», и, как результат, безоговорочно перезагружает весь контент. В то время как нажатие клавиши F5 может привести к появлению "If-Modified-Since" запрос, который мог бы получить «304 Not Modified», ответ. Вы должны учитывать это различие, если вы выполняете нагрузочное тестирование. – Vsevolod Golovanov 16 February 2013 в 17:49