Как нажать на элемент с всплывающей подсказкой «Экспорт как CSV» с использованием Selenium и Python

selenium selenium-webdriver xpath webdriverwait xpath-1.0

32 просмотра

3 ответа

Я пытаюсь нажать кнопку «Экспортировать как CSV» на этой веб-странице, используя селен https://monitoringpublic.solaredge.com/solaredge-web/p/site/public?name=Alva%20Court%20E5&locale=en_GB#/dashboard (кнопка находится рядом с заголовком «Сила и энергия»). Когда я запускаю программу, сайт всплывает, но кнопка загрузки не нажимается, что приводит к исключению тайм-аута

Однако код работает со следующим сайтом, который я нашел в другом вопросе StackOverflow https://www.rotowire.com/football/injury-report.php (хотя, когда я запускаю программу, и сайт всплывает, я должен принять вручную куки для загрузки файла, но это уже другая проблема).

Мой вопрос: почему вторая ссылка работает, а первая - нет?

Вот код:

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

browser = webdriver.Chrome("C:/Path/chromedriver.exe")
url = 'https://monitoringpublic.solaredge.com/solaredge-web/p/site/public? name=Alva%20Court%20E5&locale=en_GB#/dashboard'
browser.get(url)

button = wait(browser, 20).until(EC.element_to_be_clickable((By.CLASS_NAME, "is-csv")))
button.click()

browser.close()
Автор: John Источник Размещён: 13.08.2019 08:44

Ответы (3)


0 плюса

Для Силы и Энергии селектор есть #power_energy_panel button[class*=export].
Для сравнительной энергии есть #se-comparative-energy-panel button[class*=export].

url = "https://monitoringpublic.solaredge.com/solaredge-web/p/site/public?name=Alva%20Court%20E5&locale=en_GB#/dashboard"

browser.get(url)
button = WebDriverWait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#power_energy_panel button[class*=export]")))
button.click()
Автор: Sers Размещён: 09.08.2019 03:40

-1 плюса

Неверное имя класса. попробуйте следующее имя класса,

button = wait(browser, 20).until(EC.element_to_be_clickable((By.CLASS_NAME, "se-button-btn export_csv_btn")))
button.click()
Автор: Sureshmani Размещён: 09.08.2019 03:34

0 плюса

Чтобы вызвать click()элемент с текстом всплывающей подсказки как Экспорт как CSV, вы должны вызвать WebDriverWait для element_to_be_clickable()и можете использовать следующую стратегию локатора :

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

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//p[@class='x-panel-header-text' and text()='Power and Energy']//following::button[1]"))).click()
    
  • Примечание . Необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • Снимок браузера:

Мощность энергии

Автор: DebanjanB Размещён: 12.08.2019 01:46
Вопросы из категории :
32x32