Selenium webdriver помогает найти элемент


моя цель — получить скриншот определенного элемента, который встречается несколько раз.
Пример URL: , я хочу получить https://i.imgur.com/kcd98bQ.png

Итак, я заглянул в код и обнаружил: `Дополнительные результаты` , к сожалению
`element = driver.find_elements_by_class_name("Uo8X3b")`
не работает, потому что `class = "Uo8X3b"` встречается несколько раз:
<h1 class = "Uo8X3b">Accessibility links</h1>
<h1 class = "Uo8X3b">Search modes</h1>
<h1 class = "Uo8X3b">Search Results</h1><
<h2 class = "Uo8X3b">Web results</h2>
<h2 class = "Uo8X3b">Notices about Filtered Results</h2>
<h1 class = "Uo8X3b">Page navigation</h1>
<h2 class = "Uo8X3b">Complementary results</h2>
<h3 class = "Uo8X3b">Images</h3>
<h2 class = "Uo8X3b">Description</h2>
<h2 class = "Uo8X3b">Description</h2>
<h1 class = "Uo8X3b">Footer links</h1>

После прочтения https://selenium-python.readthedocs.io/locating-elements.html у меня закончились идеи.

мой код на питоне

#!/usr/bin/env python3
  
# import webdriver 
from selenium import webdriver 
from selenium.webdriver.chrome.options import Options
from PIL import Image
  
# create webdriver object 
options = Options()
#options.headless = True
driver = webdriver.Chrome(options=options, executable_path=r'/usr/bin/chromedriver')
  
driver.get("https://www.google.com/search?q=elon%20musk")
  
# get element  

element = driver.find_elements_by_class_name("Uo8X3b")
  
# print complete element 
print(element) 

exit()

Результат:

[<selenium.webdriver.remote.webelement.WebElement (session = "7bc20d0d87be84ee463612341bbd4d1e", element = "0c5b38af-7350-4d54-968e-2dbf1bcfd590")>, <selenium.webdriver.remote.webelement.WebElement (session = "7bc20d0d87be84ee463612341bbd4d1e", element = "59f03910-6787-4009-9793-c9f2ad2fb42b")>, <selenium.webdriver.remote.webelement.WebElement (session = "7bc20d0d87be84ee463612341bbd4d1e", element = "d124b2ca-ac51-401f-9e9c-653627af439c")>, <selenium.webdriver.remote.webelement.WebElement (session = "7bc20d0d87be84ee463612341bbd4d1e", element = "35728814-738c-4f45-92cc-2c1353fdda0a")>, <selenium.webdriver.remote.webelement.WebElement (session = "7bc20d0d87be84ee463612341bbd4d1e", element = "b1491e4c-7d69-4ca1-b0b5-a2cf56382041")>, <selenium.webdriver.remote.webelement.WebElement (session = "7bc20d0d87be84ee463612341bbd4d1e", element = "70774d08-5e42-499e-9e81-8c7a61763a63")>, <selenium.webdriver.remote.webelement.WebElement (session = "7bc20d0d87be84ee463612341bbd4d1e", element = "3e9ef6a4-9013-4421-810d-6a0a9f2357ce")>, <selenium.webdriver.remote.webelement.WebElement (session = "7bc20d0d87be84ee463612341bbd4d1e", element = "289735b1-3685-4f9a-9156-f1af4a3d1ebf")>, <selenium.webdriver.remote.webelement.WebElement (session = "7bc20d0d87be84ee463612341bbd4d1e", element = "b6a2eda1-8038-4dd1-9047-36cf263863c1")>, <selenium.webdriver.remote.webelement.WebElement (session = "7bc20d0d87be84ee463612341bbd4d1e", element = "ebe87746-7bf3-495c-8660-3ca823c6e4b1")>, <selenium.webdriver.remote.webelement.WebElement (session = "7bc20d0d87be84ee463612341bbd4d1e", element = "de8af129-a648-4862-a7de-c9486e7d16e2")>, <selenium.webdriver.remote.webelement.WebElement (session = "7bc20d0d87be84ee463612341bbd4d1e", element = "ce4de9f5-337f-4151-8a0a-e289bc9d7d2a")>, <selenium.webdriver.remote.webelement.WebElement (session = "7bc20d0d87be84ee463612341bbd4d1e", element = "456b2fbf-353b-4de9-b6ad-6377d13addbd")>, <selenium.webdriver.remote.webelement.WebElement (session = "7bc20d0d87be84ee463612341bbd4d1e", element = "3e877977-2e16-4639-a497-c4099f83a872")>]

Как я могу ограничить поиск, чтобы найти только элемент <h2 class = "Uo8X3b">Complementary results</h2>

Заранее большое спасибо!



Кстати: рабочий код для duckduckgo.com

#!/usr/bin/env python3
  
# import webdriver 
from selenium import webdriver 
from selenium.webdriver.chrome.options import Options
from PIL import Image
  
# create webdriver object 
options = Options()
#options.headless = True
driver = webdriver.Chrome(options=options, executable_path=r'/usr/bin/chromedriver')
driver.get("https://duckduckgo.com/?q=elon+musk")
  
# get element  
element = driver.find_element_by_class_name("module__body") 
  
# print complete element 
print(element) 

location = element.location
size = element.size

driver.save_screenshot("shot.png")

x = location['x']
y = location['y']
w = size['width']
h = size['height']
width = x + w
height = y + h

im = Image.open('shot.png')
im = im.crop((int(x), int(y), int(width), int(height)))
im.save('image.png')
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
110
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте xpath

 //h2[@class = "Uo8X3b" and contains(text(),"Complementary"]

Или

 //h2[@class = "Uo8X3b" and text() = "Complementary results"]

Второй будет искать точный текст, сначала будет искать подстроку

Другие вопросы по теме