Возникла необходимость использования елемента на странице до загрузки страницы полностью. Есть возможность заставить вебдрайвер прекратить загрузку страницы (эмуляция крестика в браузере например)?
не оно?
wd.manage().timeouts().pageLoadTimeout(5000, TimeUnit.MILLISECONDS);
try {
wd.get(url);
break;
} catch (org.openqa.selenium.TimeoutException te) {
((JavascriptExecutor)wd).executeScript("window.stop();");
} catch (UnhandledAlertException uae) {
Alert alert = wd.switchTo().alert();
alert.accept();
}
но если нужно определенные элемент чтобы в доме был, и сразу после этого стопаться, то нужно еще сильнее “выдумывать”. Не секрет, а зачем вам такое?
Не секрет, дело в том, что страница находится в постоянно “загрузке”, что не дает get-у отработать до конца, соответственно не получается добраться до элементов, необходимо принудительно стопать каким то образом get. И тут я профан… )
И ваш пример под Джаву, нужен Питон. )
Вообще сурово, если страница никогда не подгружается.
Какая разница Питон, Джава, Руби, точкаНет.
Портируем используя docs…
#impors on your own
wd.set_page_load_timeout(5) #not sure if seconds or ms
try:
wd.get(url)
except TimeoutException:
wd.execute_script('window.stop();')
except UnexpectedAlertPresentException: #java's UnhandledAlertException
alert = driver.switch_to_alert()
alert.accept()
логика есть, все биндинги в питоне есть. ищите в инете джава, больше примеров, а спортировать, как правило, не сложно.
Идею понял, спасибо )
Все такие не совсем подходит данное решение, так как окно у нас в постоянной загрузке, и все, что связанно с “wd” даже в except - не грузится.
import ...
wd = webdriver.Firefox()
wd.set_page_load_timeout(5)
try:
get("http://example.com")
except TimeoutException:
print "11111"
wd.execute_script('window.stop();')
print "2222"
button = wd.find_element_by_xpath("//button[@class='class_name']")
button.click()
print ‘1111’ отрабатывает, все что дальше - нет.
тоесть остановить execute_script-ом не удается…
2.40 попробуйте. Только версию ФФ смените на соответствующую.