Как нажать на элемент с всплывающей подсказкой «Экспорт как CSV» с использованием Selenium и Python
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
Снимок браузера:
Вопросы из категории :
- selenium Есть ли способ одновременно запускать тесты Bamboo?
- selenium Selenium xpath flow
- selenium Доступ к диалоговому окну загрузки файлов в Firefox
- selenium Как отключить Javascript при использовании Selenium?
- selenium-webdriver Selenium WebDriver: я хочу перезаписать значение в поле вместо добавления к нему с помощью sendKeys с использованием Java
- selenium-webdriver NoClassDefFoundError в Java: com / google / common / base / Function
- selenium-webdriver Как выбрать опцию из выпадающего списка, используя Selenium WebDriver C #?
- selenium-webdriver Загрузка файлов с использованием Selenium WebDriver и Java Robot Class
- xpath Какой правильный XPath для выбора атрибутов, которые содержат «foo»?
- xpath Создать XML-узлы на основе XPath?
- xpath XPath выберите узел с пространством имен
- xpath Использование Xpath с пространством имен по умолчанию в C #
- webdriverwait Как решить ElementNotInteractableException: элемент не отображается в веб-драйвере Selenium?
- webdriverwait Selenium Webdriver - исключение устаревшего элемента при нажатии на несколько раскрывающихся списков, в то время как HTML DOM не изменяется
- webdriverwait selenium.common.exceptions.ElementNotVisibleException: Сообщение: элемент не отображается при попытке доступа к элементу с помощью Python + Selenium
- webdriverwait Как ждать любого из двух элементов на странице, используя selenium xpath
- xpath-1.0 Проверьте тип узла в шаблоне XSL
- xpath-1.0 Как использовать начальный-с (), содержит () и заканчивается-в () в XPath, чтобы найти внутренний текст XML-узла? в XPATH 1.0
- xpath-1.0 XPath 1.0: используйте значение атрибута родителя текущего узла, чтобы найти другой соответствующий узел
- xpath-1.0 Могу ли я рефакторинг, чтобы избежать "self ::" и "parent ::"?