Python 之 webdriver 控制网页


Python 之 webdriver 控制网页

# 下载报表
def DowExcel():
    # Google 浏览器
    # options = Options()
    # options.binary_location = r"****\\chrome.exe"
    # prefs = {"download.default_directory":"D:\\"}
    # options.add_experimental_option("prefs", prefs)
    # options.add_argument("--start-maximized")
    # options.add_argument("--no-sandbox")
    # driver = webdriver.Chrome(options=options, executable_path=r'******\\Chromedriver.exe')
    
    # Fir 浏览器
    fp = webdriver.FirefoxProfile()
    fp.set_preference('browser.download.manager.showWhenStarting', False)
    fp.set_preference('browser.download.dir', 'D:\\Chrome\\')
    fp.set_preference("browser.download.folderList", 2)
    fp.set_preference('browser.helperApps.neverAsk.saveToDisk',
                      'application/x-excel')
    # options.binary_location = r"******\\firefox.exe"
    driver = webdriver.Firefox(
        firefox_profile=fp, executable_path=r'******\\geckodriver.exe')
    driver.maximize_window()
    try:
        driver.get('url')
        time.sleep(0.5)
        # driver.maximize_window()
        # time.sleep(0.5)
        # 登陆用户
        driver.find_element_by_xpath(
            '//*[@id="fs-login-content"]/div[2]/input').send_keys("username")
        driver.find_element_by_xpath(
            '//*[@id="fs-login-content"]/div[3]/input').send_keys('password')
        driver.find_element_by_xpath('//*[@id="fs-login-btn"]').click()
        time.sleep(2)
        # 进入表格
        driver.find_element_by_xpath(
            '//*[@id="fs-frame-menu"]/div[1]/div[1]/div/ul/li/a').click()
        driver.find_element_by_xpath(
            '//*[@id="fs-frame-menu"]/div[1]/div[1]/div/ul/li/ul/li[6]/a').click()
        time.sleep(1)
        # 进入表单
        ifram = driver.find_element_by_xpath(
            '//*[@id="fs-frame-content"]/div/div[4]/iframe[2]')
        driver.switch_to.frame(ifram)
        time.sleep(5)
        # 悬停下载
        driver.find_element_by_xpath(
            '/html/body/div[2]/table/tbody/tr/td[15]/div/div/div/em/button').click()
        time.sleep(0.5)

        # chrome 需要移动到指定位置
        # Excel = driver.find_element_by_xpath("/html/body/div[3]/div[2]")
        # time.sleep(0.5)
        # ActionChains(driver).move_to_element(Excel).perform()
        # time.sleep(0.5)

        # firefox 浏览器需要点击一下
        driver.find_element_by_xpath('/html/body/div[3]/div[2]').click()
        time.sleep(1)

        driver.find_element_by_xpath('/html/body/div[4]/div[2]').click()
        time.sleep(2)
        driver.close()
    except Exception as e:
        print(e)
        driver.close()
        DowExcel() # 失败重来