Python-如何让Selenium send_键在IE11中工作

Python-如何让Selenium send_键在IE11中工作,python,selenium,pdf,web-scraping,internet-explorer-11,Python,Selenium,Pdf,Web Scraping,Internet Explorer 11,我正在构建一个网络刮板,从一个公立学校的数据库站点下载PDF文件,脚本本身可以很好地与Chrome配合使用,这是我更喜欢的。但是,该网站只允许您使用IE下载文件。脚本使用Selenium,我一直试图使用IE驱动程序(32位和64位),但都没有用。它会打开网页,但当我使用send_keys方法时,它不会输入任何内容,并且不会收到任何错误。同样,这在Chrome中工作良好。代码如下: from selenium import webdriver from selenium.webdriver.sup

我正在构建一个网络刮板,从一个公立学校的数据库站点下载PDF文件,脚本本身可以很好地与Chrome配合使用,这是我更喜欢的。但是,该网站只允许您使用IE下载文件。脚本使用Selenium,我一直试图使用IE驱动程序(32位和64位),但都没有用。它会打开网页,但当我使用send_keys方法时,它不会输入任何内容,并且不会收到任何错误。同样,这在Chrome中工作良好。代码如下:

from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time
import pandas as pd
url = "https://mdoe.state.mi.us/cms/grantauditorreport.aspx"
districtlist = pd.read_csv(filepath_or_buffer=r'DistrictList.csv',squeeze=True)

for district in districtlist:
ieoptions = webdriver.IeOptions()
driver = webdriver.Ie(executable_path='IEDriverServer.exe',options=ieoptions)
driver.get(url)

search = driver.find_element_by_name("ctl00$cphMain$txtAgency")
search.send_keys('%')
driver.find_element_by_css_selector('.ButtonStandard').click()

select = Select(driver.find_element_by_id('ctl00_cphMain_ddlAgency'))

select.select_by_visible_text(district)

start_date = driver.find_element_by_name("ctl00$cphMain$txtBeginDate")
driver.execute_script("arguments[0].value = ''", start_date)
start_date.send_keys('4/2/2018')
end_date = driver.find_element_by_name("ctl00$cphMain$txtEndDate")
driver.execute_script("arguments[0].value = ''", end_date)
end_date.send_keys('4/9/2021')

driver.find_element_by_name('ctl00$cphMain$btnSearch').click()

time.sleep(10)

driver.quit()
quit()
我是Python新手,这是我第一次涉足web抓取或Selenium

谢谢

首先,添加等待:

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

wait = WebDriverWait(driver, 30)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'input[name="ctl00$cphMain$txtAgency"]')))
然后尝试:

search = driver.find_element_by_css_selector('input[name="ctl00$cphMain$txtAgency"]')
search.click()
search.send_keys('%')
或者


IE总是很难自动化。

您的代码是正确的。我测试并发现,如果我们以管理员的身份运行python代码,它可以在IE中很好地运行

您可以先以管理员身份运行cmd,如下所示,然后导航到py文件的路径并运行命令:

python yourfile.py

让我知道这是否会对您的代码进行workSmall修复。我通常通过as SelectBy导入,以避免与我使用的另一个模块混淆。请接受答案(是否有帮助)检查我的答案,并留下一些关于此问题的反馈?我下面的回答是否有助于解决这个问题?如果是这样,你可以参考接受它,它可以帮助其他社区成员在今后类似的问题上。谢谢你的理解。
python yourfile.py