python+selenium+excel自动登录,自动填写网页

经常有些网页要登录,然后频繁填写一些重复的内容,本文暂只考虑不需要验证码的情况,可以通过selenium模拟用户行为在页面操作,用excel拖出相似内容,用xlrd读取并填写到网页中。

  • 导入相关包
from selenium import webdriver

import os
import xlrd
import xlwt
import json
import requests, json,time
from selenium.webdriver.support.wait import WebDriverWait```



+ 调用webdriver,进入登录页面

```python
ChromeDriverServer = '''C:\\Users\\Chrome\\chromedriver.exe'''
url='https://www.baidu.com/'
myurl='' #跳转后的页面
os.environ["webdriver.chrome.driver"] = ChromeDriverServer
brguge = webdriver.Chrome(executable_path=ChromeDriverServer)
brguge.get(url)  # 发送get请求
brguge.find_element_by_id('username').send_keys('xxx')  # 输入用户名
brguge.find_element_by_id('password').send_keys('xxx')  # 输入密码
time.sleep(0.5)
brguge.find_element_by_class_name('loginBtn').click()  # 确认
print(brguge.current_url)  # 输出搜索的路径
brguge.get(myurl)```



+ 读取excel
xlsfile表示绝对路径,如xlsfile = r'E:\4_文档\总结\30周.xlsx'

```python
def read(xlsfile):
    book = xlrd.open_workbook(xlsfile)#得到Excel文件的book对象,实例化对象
    sheet0 = book.sheet_by_index(0) # 通过sheet索引获得sheet对象
    sheet_name = book.sheet_names()[0]# 获得指定索引的sheet表名字
    sheet1 = book.sheet_by_name(sheet_name)# 通过sheet名字来获取,当然如果知道sheet名字就可以直接指定
    nrows = sheet0.nrows    # 获取行总数
    ncols = sheet0.ncols    #获取列总数

    for i in range(nrows):
        list.append([])
        for j in range(ncols):
            # print(sheet0.cell_value(i, j))
            list[i].append(str(sheet0.cell_value(i,j)))
    print(list)
    return list```



+ 从list将内容写入网页

```bash
    gz=brguge.find_elements_by_name('gz')
    for i in range(0, rows):
        gz[i].clear()
        gz[i].send_keys(list[i+2][0])  # 输入
    brguge.find_element_by_id('s1_ok').click()# 确认```



+  

 

 

 
posted @ 2024-05-08 13:11  木头左  阅读(82)  评论(0编辑  收藏  举报