python - 如何在使用 Selenium 和 Python 自动填充其默认文本之前填充 javascript 小部件
问题描述
我正在尝试填写 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()
将发送日期,该字段将包含两个连接的日期。
解决方案
可以这么说,我只需要“让我的手指失去控制”
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()
在我完成 'CTRL + a' 之后使用 key_up(KEYS.CONTROL) 就可以了。
推荐阅读
- spring-data-jpa - 我怎么知道哪些属性在 spring.jpa.properties 下
- arrays - 在 bash 脚本中循环 JSON 数组并通过 JQ 提取数据
- c# - 如何为.Net核心创建带有字典输入的自定义单选按钮
- c++ - 如何在野兽中重用 http::response
- angular - 响应式 highchart 仪表
- sql - SQL Server - 使用临时表优化存储过程
- node.js - 如何检测副本集的 MongoDB 重新连接
- mongodb - MongoDB在同一键中查找具有多个条件的嵌套子文档
- python - 计算跨数据帧的重叠时间间隔
- python - 我如何使用 tkinter 在 selenium 中使用变量