Python Поиск элемента по XPath - PullRequest
0 голосов
/ 08 апреля 2020

Для ознакомительного визита https://rabirius.me/2020/02/14/bird-watching/ (не мой веб-сайт)

Вы можете увидеть кнопку «Мне нравится» рядом с кнопкой «Журнал переброса»

Я хочу нажать python что, но я получаю сообщение об ошибке

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div/div/div[2]/a"}

Код, который я написал, был

for posts in open_links:
       bot.get(posts)
       sleep(4)
       bot.find_element_by_xpath('/html/body/div/div/div[2]/a').click()
       sleep(2)

HTML кнопки «Мне нравится»:

<div class="wpl-button like">
            <a href="#" title="177 bloggers like this." class="like sd-button" rel="nofollow">
                <span>Like</span>
            </a>
        </div>

Любая помощь будет оценен

1 Ответ

1 голос
/ 08 апреля 2020

На странице присутствует iframe, поэтому вам нужно сначала переключиться на этот iframe, а затем оперировать с элементом, и рекомендуется использовать явное ожидание для ожидания появления элемента на странице. Вы можете сделать это следующим образом:

for posts in open_links:
   bot.get(posts)
   driver.switch_to.frame(bot.find_element_by_tag_name('iframe'))
   like_element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[contains(@class,'wpl-likebox')]//span[text()='Like']")))
   like_element.click()

Вам необходимо добавить следующий импорт:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...