【问题标题】:Python - How to get Selenium send_keys to work in IE11Python - 如何让 Selenium send_keys 在 IE11 中工作
【发布时间】:2021-07-05 20:27:06
【问题描述】:

我正在构建一个网络爬虫来从公立学校数据库站点下载 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 新手,这是我第一次涉足网络抓取或 Selenium。

谢谢!

【问题讨论】:

  • 检查我的答案并留下一些反馈
  • 这个问题怎么样?我下面的回答对解决这个问题有帮助吗?如果是这样,您可以参考this 接受它,它可以帮助其他社区成员将来解决类似问题。感谢您的理解。

标签: python selenium pdf web-scraping internet-explorer-11


【解决方案1】:

首先,添加等待:

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('%')

或者,

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

IE 总是很难自动化。

【讨论】:

  • 我通常将 By 导入为 SelectBy 以避免与我使用的另一个模块混淆。
  • 如果有帮助请采纳)
【解决方案2】:

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

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

python yourfile.py

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-30
    • 2018-04-18
    • 1970-01-01
    • 2021-02-01
    • 2016-05-27
    • 1970-01-01
    • 2018-08-09
    • 2021-08-02
    相关资源
    最近更新 更多