Size: a a a

2019 December 12

SD

Stackoverflow Driven Developer in atinfo chat
0x3nCoDe DefCon
Парни, нужна помощь
Selenium, python, timeout page load

Короче. Перелопатил валом страниц с помощью по поводу преждевременной остановки загрузки страниц
Итак, есть link, я его гружу в фаерфокс, страница (сам HTML) грузится максимум за 3 сек.
Но! Страница использует всякие свистоперделки-джаваскриптьі загружаемьіе из Yandex, Mail.RU, Google, Facebook
и прочие анализаторьі страниц. Загрузка продолжается примерно 60 сек. Почему так долго? Блин,
я живу в Украине и тут есть некоторого рода специальньіе правовьіе и технические ограничения на сервисьі из РФ.
Страница считается загруженой, если долго не получилось у браузера подгрузить или получить ответ от скриптов.

ВОПРОС: как рубануть подгрузку свистоперделок? меня устроит словить момент, когда браузер подгрузит html, я увижу,
что определенньіе елементьі на странице уже отрисованьі (например e-mail или копирайт или еще что-то) и зная, что
они уже отрисованьі иду дальше. Как driver.get(link) остановить раньше (например за фиксированное время) ???
https://hastebin.com/iruqanawis.css

Можно что-то типа такого.
источник

SD

Stackoverflow Driven Developer in atinfo chat
Если я правильно тя понял.
источник

0D

0x3nCoDe DefCon in atinfo chat
сейчас попробую данньій вариант
источник

0D

0x3nCoDe DefCon in atinfo chat
Stackoverflow Driven Developer
https://hastebin.com/iruqanawis.css

Можно что-то типа такого.
сработало на половину
источник

SD

Stackoverflow Driven Developer in atinfo chat
0x3nCoDe DefCon
сработало на половину
конкретику в студию
источник

0D

0x3nCoDe DefCon in atinfo chat
там авторизация на странице. Т.е. остановило загрузку, ввел логин-пароль и нажал кнопочку отправить. Тут-то и падает скрипт
источник

SD

Stackoverflow Driven Developer in atinfo chat
0x3nCoDe DefCon
там авторизация на странице. Т.е. остановило загрузку, ввел логин-пароль и нажал кнопочку отправить. Тут-то и падает скрипт
С какой ошибкой падает? И сколько выставил таймаут?
источник

0D

0x3nCoDe DefCon in atinfo chat
Stackoverflow Driven Developer
С какой ошибкой падает? И сколько выставил таймаут?
Traceback (most recent call last):
 File "rashka_create_cookies.py", line 33, in <module>
   b.get(link)
 File "/home/n/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 333, in get
   self.execute(Command.GET, {'url': url})
 File "/home/n/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
   self.error_handler.check_response(response)
 File "/home/n/.local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
   raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: Timeout loading page after 3000ms
источник

0D

0x3nCoDe DefCon in atinfo chat
пример текст так віглядит:

b = webdriver.Firefox()
b.set_page_load_timeout(time_out)
# b = webdriver.Firefox(options=options)
# *******************************************
try:
 b.get(link)
except TimeoutException:
 b.execute_script('window.stop();')

 xpath_login = '//input[@id="login"]'
 xpath_pswd = '//input[@id="pass"]'
 xpath_auth = '//input[@type="image"]'
 l = b.find_element_by_xpath(xpath_login)
 b.execute_script("arguments[0].setAttribute('value', arguments[1]);", l, '')
 l.send_keys(login)
 b.find_element_by_xpath(xpath_pswd).send_keys(pswd)
 b.find_element_by_xpath(xpath_auth).click()
finally:
 b.quit()
источник

SD

Stackoverflow Driven Developer in atinfo chat
0x3nCoDe DefCon
Traceback (most recent call last):
 File "rashka_create_cookies.py", line 33, in <module>
   b.get(link)
 File "/home/n/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 333, in get
   self.execute(Command.GET, {'url': url})
 File "/home/n/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
   self.error_handler.check_response(response)
 File "/home/n/.local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
   raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: Timeout loading page after 3000ms
У тебя этот таймаут теперь всегда при загрузке страниц. То есть, как я понимаю, у тебя после авторизации идет загрузка страницы. И падает, так как за 3 секунды не успевает загрузить страницу
источник

0D

0x3nCoDe DefCon in atinfo chat
да. Т.е. предложенньій тобой пример он подходит для ситуации перед авторизацией
источник

SD

Stackoverflow Driven Developer in atinfo chat
Можно в finally увеличить таймаут. Ну может кто-то еще какой-нить вариант предложит.
источник

0D

0x3nCoDe DefCon in atinfo chat
хм. может вопрос немного по другому, нужно ограничить время вьіполнения driver.get(link) или загрузку страниц когда отправляешь данньіе после нажатия на копку button-submit
источник

O

Oleg in atinfo chat
0x3nCoDe DefCon
хм. может вопрос немного по другому, нужно ограничить время вьіполнения driver.get(link) или загрузку страниц когда отправляешь данньіе после нажатия на копку button-submit
Может пойти от обратного и для тестового стенда убирать ненужные подтягивания скриптов?
В теории, это один скрипт на том же питоне с регзепом
источник

0D

0x3nCoDe DefCon in atinfo chat
Oleg
Может пойти от обратного и для тестового стенда убирать ненужные подтягивания скриптов?
В теории, это один скрипт на том же питоне с регзепом
речь идет о том, чтобьі скачивать страницу только с сервера сайта?
источник

0D

0x3nCoDe DefCon in atinfo chat
можно, но как реализовать сие?
источник

O

Oleg in atinfo chat
0x3nCoDe DefCon
речь идет о том, чтобьі скачивать страницу только с сервера сайта?
Если у вас буквально 1 страница html и больше никаких css и скриптов на вашем сервере нет, то можно страницу хоть wget'ом, хоть curl'ом скачивать и патчить/гонять ее локально
Но я имел ввиду сделать клон сервиса на сервере и пропатчить его, убрав ненужные скрипты
источник

0D

0x3nCoDe DefCon in atinfo chat
Oleg
Если у вас буквально 1 страница html и больше никаких css и скриптов на вашем сервере нет, то можно страницу хоть wget'ом, хоть curl'ом скачивать и патчить/гонять ее локально
Но я имел ввиду сделать клон сервиса на сервере и пропатчить его, убрав ненужные скрипты
сайт явно не мой, каких-либо правок не подразумевается. Неужели нельзя повлиять на время вьіполнения driver.get(link)
источник

0D

0x3nCoDe DefCon in atinfo chat
еще один возможньій вариант решения: можно один раз сделать "слепок" состояния браузера для сайта и потом уже для других запусков перед открьітием страниц подгружать слепок, после чего делать все остальное на сайте !?
источник

SD

Stackoverflow Driven Developer in atinfo chat
0x3nCoDe DefCon
сайт явно не мой, каких-либо правок не подразумевается. Неужели нельзя повлиять на время вьіполнения driver.get(link)
https://t.me/qa_automation

Можешь еще вот тут спросить.
источник