Как получить доступ к элементу span и изменить его значение - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь создать сценарий python + selenium для извлечения CSV со страницы пардо продаж salesforce.

Может кто-нибудь, пожалуйста, помогите мне получить доступ к вложенному элементу span внутри выпадающего списка, который будет сгенерировано по нажатию кнопки.

Я добавляю код, сделанный до сих пор, и получаю сообщение об ошибке тайм-аута при выполнении моего скрипта.

from selenium import webdriver
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
try:
    chrome_options = webdriver.ChromeOptions()
    prefs = {'download.default_directory': r'C:\Pardot'}
    chrome_options.add_experimental_option('prefs', prefs)
    driver = webdriver.Chrome(executable_path="D:\XXX XXXX\XXXX\drivers\chromedriver.exe", options=chrome_options)
    driver.get('https://pi.pardot.com/engagementStudio/studio#/15627/reporting')
    user_name = driver.find_element_by_css_selector('#email_address')
    user_name.send_keys('XXXXXXXXXXXXXXXXXXX')
    password = driver.find_element_by_css_selector('#password')
    password.send_keys('XXXXXXXXXXXXXXXXX)
    submit_button = driver.find_element_by_css_selector('input.btn')
    submit_button.click()
    WebDriverWait(driver, 10).until(
    EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, "iframe#content-frame")))
    WebDriverWait(driver, 10).until(EC.text_to_be_present_in_element_value(text_='All Time',locator=(By.CSS_SELECTOR,"span[data-qa='reporting-filter-trigger-value']")))

except (RuntimeError) as e:
    print(e)
finally:
    time.sleep(10)
    driver.close()

Снимок экрана для элемента DOM диапазона


Ошибка трассировки стека:

C:\Users\Vipul.Garg\AppData\Local\Programs\Python\Python37\python.exe "D:/Vipul Garg Backup/XXXX/testingCSVfetching.py"
Traceback (most recent call last):
  File "D:/Vipul Garg Backup/XXXX/testingCSVfetching.py", line 22, in <module>
    WebDriverWait(driver, 10).until(EC.text_to_be_present_in_element_value(text_='All Time',locator=(By.CSS_SELECTOR,"span[data-qa='reporting-filter-trigger-value']")))
  File "C:\Users\Vipul.Garg\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 

1 Ответ

0 голосов
/ 03 марта 2020

попробуйте этот подход

spans = driver.find_element_by_css_selector('.slds-button_reset.slds-grow.slds-has-blur-focus.trigger-button').get_attribute('innerHTML') print(spans) Вы должны получить весь диапазон.

...