Поиск тоа-сайта в Яндекс выдаче

Прошу помочь, так как не могу найти решение

Автоматизация через python+selenium

Шаги:

  1. Набрать наименование. Допустим, Вконтакте;
  2. Определить, находится ли в первых трёх строках выдачи.

Решил через xpath с применением цикла - выдаёт постоянно:

"Возникло исключение: NoSuchElementException
Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[class='path']/a[class='link']"}"

Вот код скрипта:

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

driver = webdriver.Chrome()
driver.get("https://yandex.ru")
search_string = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.CLASS_NAME, "input__control")))

search_stroke = driver.find_element_by_class_name("input__control")
search_stroke.send_keys("Вконтакте")
search_suggest = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.CLASS_NAME, "mini-suggest__popup-content")))

search_stroke.send_keys(Keys.ENTER)
#здесь ошибка ↓ 
elements = driver.find_element_by_xpath("//div[class='path']/a[class='link']")
for i in range(2):
    print(elements[i])

Мне просто нужно определить что в первых трёх строках есть vk.com. И именно надо через сайт Яндекс, а не API или как-то по-другому :)


Ответы (1 шт):

Автор решения: Денис Иванов

Исправил где у Вас ошибка

        elements = []
        elements.append(driver.find_element_by_css_selector("#search-result > li:nth-child(3) > div > h2 > a"))
        elements.append(driver.find_element_by_css_selector("#search-result > li:nth-child(4) > div > h2 > a"))
        elements.append(driver.find_element_by_css_selector("#search-result > li:nth-child(5) > div > h2 > a"))
        for i in range(2):
          print(elements[i].text )
          print(elements[i].get_attribute('innerHTML') )
→ Ссылка