Как идентифицировать элемент через имя класса, даже если есть несколько элементов с одинаковыми именами классов, используя Selenium и Python
<div class="_2S1VP copyable-text selectable-text" data-tab="1" dir="ltr" spellcheck="true" contenteditable="true"></div>
<div class="_2S1VP copyable-text selectable-text" data-tab="3" dir="ltr" contenteditable="true"></div>
Я новичок, и мне было трудно отличить / указать первый класс от второго
typing = bot.find_element_by_xpath('//div[@class = "_1Plpp"]')
это, похоже, не работает, и просто использование имени класса всегда вызывает нежелательный второй с тем же именем класса, я заметил, что у него есть data-tab="3", а у другого - data-tab="1"как мне указать один с data-tab =" 1 "поверх другого.
2 ответа
Поскольку атрибут class обоих элементов содержит похожие значения, вы не сможете различить их только с помощью атрибута class, и вам, возможно, придется учитывать некоторые другие атрибуты.
Чтобы идентифицировать первый элемент, вы можете использовать любую из следующих стратегий локатора:
С помощью
css_selector
вместе с атрибутом вкладки данных:typing = bot.find_element_by_css_selector("div.copyable-text.selectable-text[data-tab='1']")
С помощью
xpath
вместе с атрибутом вкладки данных:typing = bot.find_element_by_xpath("//div[contains(@class, 'copyable-text') and @data-tab='1']")
С помощью
xpath
вместе с атрибутом вкладки данных:typing = bot.find_element_by_xpath("//div[contains(@class, 'selectable-text') and @data-tab='1']")
Для простейшего использования (поскольку вы новичок) загрузите страницу в браузере, а затем выберите div
и скопируйте full xpath
что выглядит примерно так /html/body/div[3]/div[2]/div/div[1]/div[3]/div[3]/form/div[1]/div[1]/div/div[1]/ul/li[18]
это может решить вашу проблему. Надеюсь, что это поможет вам!