Не могу заставить селен нажать кнопку

Aug 16 2020

Изображение элемента проверки веб-сайта Подробнее Рисунок Мой фрагмент кода

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
import requests
///
excel = driver.find_element_by_name('Excel')
excel.click()

Затем я получаю это, когда пытаюсь запустить его, любая помощь будет оценена

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="Excel"]"}

Ответы

2 DebanjanB Aug 17 2020 at 05:39

Желаемый элемент - это элемент Angular , поэтому, чтобы щелкнуть элемент, вы должны вызвать WebDriverWait для, element_to_be_clickable()и вы можете использовать любую из следующих стратегий локатора :

  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[mat-button] > span.mat-button-wrapper span"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@mat-button]/span[@class='mat-button-wrapper']//span[text()='Excel']"))).click()
    
  • Примечание . Вам необходимо добавить следующий импорт:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
1 hams222 Aug 16 2020 at 13:42

driver.find_element_by_name ('Excel') выбирает тег с именем = 'Excel'.

Например, он найдет такой тег:

<div name='Excel'>Hello</div>.

CSS-эквивалент для find_element_by_name - [name = "Excel"].

Из рисунка элемента inspect на вашем веб-сайте кажется, что вы пытаетесь найти элемент с текстом «Excel» внутри div, поэтому вместо этого вам нужно использовать следующую функцию:

driver.find_element_by_link_text('Excel')

Надеюсь, это помогло!

Чтобы узнать больше о Python selenium webdriver, используйте эту ссылку . Мне это очень помогло!