获取一些javascript生成的href附加到一个带有selenium的按钮?

时间:2015-07-14 18:03:39

标签: python python-3.x selenium python-3.4

我使用selenium从我们的电话系统中提取一些自动电话报告(Barracuda Cudatel,非常好的小型商业系统,但它没有我需要的API)。报表页面上有一个按钮,在点击侦听器上附加了一些javascript,然后告诉浏览器下载文件。

显然,selenium并不是真的设计用于提取这样的文件,但是我想要做的就是获取本已发送到浏览器的url的href。然后,我可以转而使用会话凭据和请求来提取文件并对其进行处理。

如何执行以下操作(在Python中):

  1. 查询'点击'
  2. 的事件监听器
  3. 关闭javascript
  4. 获取生成的网址
  5. 编辑:我知道可以在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()
    

1 个答案:

答案 0 :(得分:0)

您仍然可以通过将特定mime类型的文件的目标目录配置为自动下载(不使用“另存为”对话框)来使用selenium进行处理,请参阅: