а в обычном хроме проходит тест?
Да, в обычном проходил без лишних манипуляций: без клика и без повторного поиска элемента.
7 публикаций создано cenzor (учитываются публикации только с 27 апреля 2023)
Отправлено автор: cenzor 14 ноября 2017 - 00:23 в Selenium - Functional Testing
а в обычном хроме проходит тест?
Да, в обычном проходил без лишних манипуляций: без клика и без повторного поиска элемента.
Отправлено автор: cenzor 14 ноября 2017 - 00:22 в Selenium - Functional Testing
У вас перед заполнением поля - обновление страницы не происходит, случайно?
Нет.
Всем спасибо. Проблема решена.
Получилось вот таким способом:
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...')
Отправлено автор: cenzor 13 ноября 2017 - 09:27 в Selenium - Functional Testing
Отправлено автор: cenzor 13 ноября 2017 - 03:44 в Selenium - Functional Testing
Здравствуйте.
Не могу понять логику, почему так происходит, прошу подсказать.
Ищу элемент:
comment = driver.find_elements_by_xpath("//textarea[@placeholder = 'some text']")
пытаюсь вставить текст
comment[0].send_keys('bla bla bla...')
пишет:
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot focus element
Пробую после поиска делать по нему клик:
comment[0].click()
а потом вставить текст
comment[0].send_keys('bla bla bla...')
вываливается совсем другое исключение:
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
Как мне всё-таки вставить текст?
Спасибо.
P.S.: в качестве драйвера использую chrome headless
Отправлено автор: cenzor 10 ноября 2017 - 11:46 в Selenium - Functional Testing
Тут пишут что надо без --
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. Запускает!
Спасибо большое!!!
Отправлено автор: cenzor 10 ноября 2017 - 03:56 в Selenium - Functional Testing
А вы попробуйте взять 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")
Для чего она нужна?
Отправлено автор: cenzor 09 ноября 2017 - 00:50 в Selenium - Functional Testing
Всем привет.
Что уж греха таить, живой пример - инстаграм: необходимо добавить комментарий. В windows7+python3.6.2+selenium+geckodriver ищу элемент (сердечко для "лайка") по XPATH:
heart = driver.find_elements_by_xpath('//a[contains(@class, "_eszkz _l9yih")]')
- находит.
Ищу элемент (строку для добавления комментария) по XPATH:
comment = driver.find_elements_by_xpath('//textarea[@placeholder = "Add a comment..."]')
- находит.
Соответственно, в обоих случаях возвращается массив найденных элементов (на практике в массиве всего 1 элемент), обращаюсь к нему comment[0].send_keys(comment_text) и т. д.
В целом, всё работает.
Переношу всё на debian8+python3.4+selenium+PhantomJS. Код прежний, ищу элемент (сердечко для "лайка") по XPATH:
heart = driver.find_elements_by_xpath('//a[contains(@class, "_eszkz _l9yih")]')
- находит.
Ищу элемент (строку для добавления комментария) по XPATH:
comment = driver.find_elements_by_xpath('//textarea[@placeholder = "Add a comment..."]')
- не находит.
Ставлю print(len(comment)) - показывает 0. Соответственно, при обращении comment[0].send_keys(comment_keys) вываливается:
IndexError: list index out of range
1) Почему XPATH для "лайка" он находит, а для комментария - нет?
2) Если элемент по XPATH не найден, не должен ли он выбрасывать соответствующее исключение? Почему этого не происходит?
Community Forum Software by IP.Board Русификация от IBResource
Лицензия зарегистрирована на: Software-Testing.Ru