Найдите кнопку «Нравится» для твита с помощью xPath (Selenium, Python) - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь найти твит как кнопку с помощью xPath.

Если я go на https://twitter.com/BillGates и использую Chrome инструменты разработчика, Я вижу:

  • Кнопка «Мне нравится» для первого твита расположена по адресу:

/ html / body / div [2] / div / div / div [ 2] / main / div / div / div / div [1] / div / div [2] / div / div / div [2] / section / div / div / div [1] / div / div / div / div. / article / div / div [2] / div [2] / div [2] / div [3] / div [3] / div / div / div [1] / svg / g / путь

  • Что первая кнопка лайка твита имеет:

    [много чисел] ">

Я пытался использовать оба расширения Python + Selenium и XPath Helper Chrome, но при обоих подходах я не могу найти кнопку.

Я безуспешно пытался использовать полный xPath, а также запрос ниже:

.find_element_by_xpath("//path[starts-with(@d, 'M')]").click()  

На самом деле, я ничего не могу получить за последний div. // svg, // g и // path все получат нулевые результаты. // div, с другой стороны, дает мне 900+ результатов ...

Спасибо, если кто-нибудь может помочь мне указать в правильном направлении.

Спасибо!

1 Ответ

2 голосов
/ 09 мая 2020

Я настоятельно рекомендую не использовать Twitter для автоматизации. В любом случае, я видел, что кнопки лайков имеют атрибут data-testid, значение которого уникально для того элемента, который вы ищете, поэтому мы можем легко получить все элементы кнопок лайков, например:

//div[@data-testid="like"]

Или с помощью селектора css следующим образом:

div[data-testid="like"]

Предполагая, что вы пишете в Python, тогда мы можем использовать метод find_element s , чтобы получить все элементы в списке.

like_buttons = driver.find_elements_by_xpath("//div[@data-testid="like"]")  

И легко нажмите кнопку «Нравится» для любого твита, которую вы укажете по индексу,

like_buttons[0].click()  # 0 Is the first tweet, 1 is the 2nd etc...

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

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