поиск элемента textarea с помощью xpath - PullRequest
1 голос
/ 23 февраля 2020

Я боролся с этим проектом селена и продолжаю находить старые ссылки или посты, которые незначительно связаны с этой проблемой. Я признаю, что я новичок в xpath и selenium, так что, надеюсь, это будет так же просто, как исправить мой синтаксис. Я использую python 3.6.9 на lubuntu 19.10, если это что-то меняет.

html элемент, к которому я пытаюсь получить доступ:

 <div class="NfvXc">
   <textarea aria-label="Write a caption…" autocomplete="off" autocorrect="off"
   class="_472V_" placeholder="Write a caption…"></textarea>
  </div>

Код, который я пробовал:

add_text = browser_object.find_element_by_xpath("//textarea[contains(@aria-label,'Write a caption...')]")

add_text = browser_object.find_element_by_xpath("//div[contains(text(),'Write a caption...')]")

Сообщения об ошибках, с которыми я сталкиваюсь при попытке использования различных путей xpath:

error in process_image(): Message: Given xpath expression "//*div[contains(text(),'Write a caption...')]" is invalid: SyntaxError: The expression is not a legal expression.

Я проверил firefox, чтобы попытаться перехватить путь xpath, отображается как: /html/body/div[1]/section/div[2]/section[1]/div[1]/textarea

Хотя я пока не уверен, как настроить мой xpath, чтобы найти этот элемент, очевидно.

1 Ответ

1 голос
/ 23 февраля 2020

XPath из сообщения об ошибке //*div[contains(text(),'Write a caption...')] недопустим, потому что вы не можете иметь и * и div и начало XPath. Выберите один из них, например //div[contains(text(),'Write a caption...')].
Однако он все равно не будет работать, так как текст находится в атрибуте, вы можете использовать //textarea[@aria-label='Write a caption…']
Обратите внимание, что //textarea[contains(text(),'Write a caption…')] не вернет никакого соответствия. Вы можете проверить свои XPath в браузере, используя синтаксис $x() в консоли, подробнее здесь .

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