Перейти к содержимому

cenzor

Регистрация: 08 ноя 2017
Offline Активность: 14 ноя 2017 00:20
-----

Мои сообщения

В теме: Теряется фокус элемента

14 ноября 2017 - 00:23

а в обычном хроме проходит тест?

Да, в обычном проходил без лишних манипуляций: без клика и без повторного поиска элемента.


В теме: Теряется фокус элемента

14 ноября 2017 - 00:22

У вас перед заполнением поля - обновление страницы не происходит, случайно?

Нет.

Всем спасибо. Проблема решена.

Получилось вот таким способом:

comment = driver.find_elements_by_xpath("//textarea[@placeholder = 'some text']")
comment[0].click()
comment = driver.find_elements_by_xpath("//textarea[@placeholder = 'some text']")
comment[0].send_keys('bla bla bla...')

В теме: Теряется фокус элемента

13 ноября 2017 - 09:27

Дело в том, что данный элемент присутствует до клика и после, не изменяя структуры, я смотрел код страницы до и после клика, он одинаковый

В теме: Selenium: PhantomJS не находит элемент по XPATH

10 ноября 2017 - 11:46

Тут пишут что надо без --

https://intoli.com/b...eadless-chrome/

 

оставьте пока только disable-gpu и headless, если заработает.ю то добавьте установку размера окна.

 

options.setBinary("/path/to/other/chrome/binary") - нужно для указания места хрома, если он установлен в нестандартное место (вам это не надо).

 

и вы не указали какой версии вы используете Селениум.

и вижу что вы хромдрайвер очень старый используете, скорее всего в нём проблема.

 

Selenium 3.7.0

ChromeDriver (v2.9.248304), поставил новый - 2.33. Запускает!

Спасибо большое!!!


В теме: Selenium: PhantomJS не находит элемент по XPATH

10 ноября 2017 - 03:56

А вы попробуйте взять html открытой страницы в PhantomJS и посмотреть есть ли там этот элемент.

Браузеры могут отрабатывать по разному, особенно такие старые. Используйте Chrome headless.

Спасибо.

Действительно, в page_source нет данного элемента, в PhantomJS страница по-другому представлена.

 

Что бы в будущем не было похожих проблем, я обратил внимание на Chrome headless, который вы указали.

Я установил google-chrome-stable, в код добавил:

options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options=options)

При запуске открывается Chrome с такой надписью и ничего не происходит:

(не получается вставить изображение, см. прикреплённый скриншот)

Trace:

Traceback (most recent call last):
  File "/usr/local/lib/python3.4/dist-packages/telebot/util.py", line 58, in run
    task(*args, **kwargs)
  File "instabot.py", line 63, in instagram_com
    driver.get("https://www.instagram.com")
  File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/webdriver.py", line 320, in get
    self.execute(Command.GET, {'url': url})
  File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/webdriver.py", line 308, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Runtime.executionContextCreated has invalid 'context': {"auxData":{"frameId":"29592.1","isDefault":true},"id":1,"name":"","origin":"://"}
  (Session info: chrome=62.0.3202.89)
  (Driver info: chromedriver=2.9.248304,platform=Linux 3.16.0-4-amd64 x86_64)

я даже пробовал с такими аргументами:

options = webdriver.ChromeOptions()
options.add_argument('window-size=1200x600')
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--ignore-certificate-errors')
options.add_argument('--disable-web-security')
driver = webdriver.Chrome(chrome_options=options)

результат тот же.

 

Хотел бы заметить, что в некоторых источниках аргументы указываются без двойного тире, а где-то с двойным тире, как правильно?

Ещё иногда встречается вот такая опция:

options.setBinary("/path/to/other/chrome/binary")

Для чего она нужна?