Как найти BTC по имени класса? - PullRequest
1 голос
/ 14 октября 2019

У меня есть этот HTML-код: <button class="_2ic5v"><span aria-label="Like" class="glyphsSpriteComment_like u-__7"></span></button>

Я пытаюсь найти все элементы, которые соответствуют этому классу, с помощью фитона и библиотеки селенового веб-драйвера: likeBtn = driver.find_elements_by_class_name('_2ic5v')

, но когда яprint likeBtn он печатает []

Я хочу найти все кнопки, которые имеют этот класс div / span, или aria-label

как мне это сделать успешно? Заранее спасибо

обновление - когда я копирую Xpath со страницы, печать остается прежней

Ответы [ 4 ]

1 голос
/ 14 октября 2019

Попробуйте использовать опцию Xpath. Эта кнопка найдет кнопку, содержащую aria-label='Like'.

//button[./span[@aria-label='Like' and starts-with(@class,'glyphsSpriteComment_like')]]

Код:

likeBtn=driver.find_elements_by_xpath("//button[./span[@aria-label='Like' and starts-with(@class,'glyphsSpriteComment_like')]]")
for button in likeBtn:
    button.click() 

Отредактировано :

Индуцирует WebDriverWait.

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

likeBtn=WebDriverWait(driver,20).until(EC.presence_of_all_elements_located((By.XPATH,"//button[./span[@aria-label='Like' and starts-with(@class,'glyphsSpriteComment_like')]]")))
1 голос
/ 14 октября 2019

Исходя из описания вашей проблемы, ваш код должен работать просто отлично. Наиболее вероятная проблема заключается в том, что ваше class имя является динамическим и изменяется. Вместо этого вы можете попробовать использовать XPATH, который запрашивает имя класса:

likeBtn = driver.find_elements_by_xpath("//button[contains(@class, '_2ic5v')]")
print(likeBtn)

Возможно, вам придется изменить значение _2ic5v на другое, в зависимости от HTML-кода вашей страницы.

0 голосов
/ 15 октября 2019

Вы можете попробовать следующий xpath

driver.find_element_by_xpath(".//button[@class='_2ic5v']")
0 голосов
/ 15 октября 2019

Название класса кнопки динамическое или статическое?

Как, если вы попытаетесь выбрать By.CssSelector?

Вы можете найти элемент с помощью селектора копирования в элементе

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