Всем привет.
Что уж греха таить, живой пример - инстаграм: необходимо добавить комментарий. В 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 не найден, не должен ли он выбрасывать соответствующее исключение? Почему этого не происходит?