我使用selenium从我们的电话系统中提取一些自动电话报告(Barracuda Cudatel,非常好的小型商业系统,但它没有我需要的API)。报表页面上有一个按钮,在点击侦听器上附加了一些javascript,然后告诉浏览器下载文件。
显然,selenium并不是真的设计用于提取这样的文件,但是我想要做的就是获取本已发送到浏览器的url的href。然后,我可以转而使用会话凭据和请求来提取文件并对其进行处理。
如何执行以下操作(在Python中):
编辑:我知道可以在selenium上的浏览器上配置下载位置,但我并不想以这种方式完成此任务。这是针对20台机器的硒网格运行的,请求可以路由到其中任何一台。由于我无法通过selenium提取文件,因此我只是直接将其提取请求。
代码I' m twiddling with under。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from time import sleep
dcap = webdriver.DesiredCapabilities.CHROME
driver = webdriver.Remote(command_executor='http://gridurl:4444/wd/hub', desired_capabilities=dcap)
driver.get("http://cudatelurl")
driver.find_element_by_name("__auth_user").send_keys("user")
driver.find_element_by_name("__auth_pass").send_keys("password")
driver.find_element_by_id("manage").click()
driver.get("http://cudatelurl/#!/cudatel/cdrs")
sleep(5)
date_dropdown = Select(driver.find_element_by_xpath('//*[@id="cui-content-inner"]/div[3]/div/div/div/div[2]/div/div/div[1]/div[2]/div/select'))
date_dropdown.select_by_value("last_week")
# This is the element that has javascript attached to it the click register is
# button.widgetType.csvButtonWidget.widgetized.actionButtonType.table-action
# but I'd prefer to not hard code it
driver.find_element_by_xpath('//*[@id="cui-content-inner"]/div[3]/div/div/div/div[2]/div/div/div[1]/div[2]/button[1]')
print(driver.get_cookies())
print(driver.title)
sleep(10)
driver.close()
driver.quit()
答案 0 :(得分:0)
您仍然可以通过将特定mime类型的文件的目标目录配置为自动下载(不使用“另存为”对话框)来使用selenium进行处理,请参阅: