Как мне заполнить виджет javascript, прежде чем он автоматически заполнит свой текст по умолчанию с помощью Selenium и Python - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь ввести дату виджета javascript, чтобы затем загрузить данные за указанную дату. Использование clear () или Ctrl + a Delete приведет к очистке текстового поля, однако при отправке строки, содержащей дату, виджет автоматически заполняется датой по умолчанию и игнорирует отправленные ему ключи. Может ли кто-нибудь помочь мне правильно заполнить дату виджета?

import requests
import re
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys as KEYS

url ='https://rtba.spectraenergy.com/InformationalPosting/Default.aspx?bu=TE&Type=OA'
driver = webdriver.Chrome('D:/Program Setup Files/chromedriver.exe')
driver.get(url)

date = driver.find_element_by_xpath('//*[@id="ctl00_MainContent_ctl01_oaDefault_ucDate_rdpDate_dateInput_text"]')
# ActionChains(driver).click(date).send_keys("1/1/2020").perform()
ActionChains(driver).click(date).key_down(KEYS.CONTROL).send_keys("a").send_keys(KEYS.DELETE).send_keys("1/1/2020").perform()

# Find the button, call it downloadEXCEL
downloadEXCEL = driver.find_element_by_partial_link_text('Downloadable Format')
ActionChains(driver).click(downloadEXCEL).perform()                         # Click the button

Я знаю, что send_keys работает, потому что закомментированная строка здесь

# ActionChains(driver).click(date).send_keys("1/1/2020").perform()

отправит date, и поле будет содержать две объединенные даты.

1 Ответ

0 голосов
/ 05 августа 2020

Мне нужно было только, так сказать, «убрать палец с управления».

ActionChains(driver).click(date).key_down(KEYS.CONTROL).send_keys("a").key_up(KEYS.CONTROL).send_keys("1/1/2020").send_keys(KEYS.RETURN).perform()

Использование key_up (KEYS.CONTROL) после того, как я закончил с 'CTRL + a', помогло.

...