修改form_Python批量修改网页端邮箱设置

前两天基础架构的同事遇到个问题,需要批量设置集团用户的邮箱设置,但是手工一个个操作实在是费时间,于是我就想到了用python来解决。

需求描述:登录腾讯企业邮箱

1b1b3293b147a7eed9688f94e70196e6.png

点击设置

1a82777b06ea73e2f133a60d0db96921.png

点击客户端设置

e887de1d353c958f22dfb3577a769fea.png

收取选项设置为全部后,保存更改

93281be0d9d12dd4307cde2f42a2774f.png

点击右上角的退出

cafda32c5f008c0384655b499e261a40.png

账号、密码保存在excel文件里。

解决方法:使用selenium包来操作网页,实现批量修改

遇到的问题点:

1、定位网页中的元素位置

定位“设置”时我使用的find_element_by_xpath,很容易找到了元素

179ad2ee1fa13b6c0ea913a89825e7e1.png

qqmail.find_element_by_xpath('/html/body/div[3]/div[2]/div[1]/div[2]/div[1]/div[1]/span[3]/a[2]').click()#定位语句去源码中找

定位“客户端设置”时遇到了点麻烦,本来也想用xpath,但是一直失败,后来搜了搜资料,发现可以先定位到form,然后再模糊查询

a86335aa921b73653dcf2e6f90af330d.png

    #点击客户端设置    qqmail.switch_to.frame("mainFrame")    qqmail.find_element_by_partial_link_text("客户端设置").click()#定位语句去源码中找

2、设置下拉列表的值

这个值的设置找了好多资料,最后用selenium的select解决的

from selenium.webdriver.support.select import Select

233c55d3f18a0ed5057037a76772e097.png

    #设置默认期限    val = qqmail.find_element_by_id("poprecent")    Select(val).select_by_value("65535")

3、点退出当前账号后清空原输入框中的账号记录

这个位置我试了好几个方法,包括双击输入框,发现双击输入框也不好用,因为账号是有@xxx.com后缀的,双击会只选择前半部分。其实是我想复杂了,只要执行单击输入框,再清空就可以了

    eleacct = qqmail.find_element_by_xpath("//*[@id='inputuin']")    eleacct.click()#点击这个文本框    ActionChains(qqmail).double_click(eleacct).perform()    eleacct.clear()

4、数据源就不是问题了,用xlwings,读取文件里的账号和密码两列数据,放进数组表即可

5、我用的是chrome,用这个浏览器的话,需要下载一个chromedriver放在python.exe所在的文件夹。chromedriver的版本需要与chrome的版本一致

示例代码如下:

from selenium import webdriverimport time,keyboardfrom selenium.webdriver.support.select import Selectfrom selenium.webdriver.common.action_chains import ActionChainsimport osimport xlrdimport xlwings as wxdef login(qqmail,name,pwd):    print("当前登录账户"+name)    qqmail.find_element_by_xpath('/html/body/div[1]/div[2]/div/form/div[3]/div[3]/a[1]').click()#定位语句去源码中找    time.sleep(1)#延时加载        #找到登录框,输入账号密码    eleacct = qqmail.find_element_by_xpath("//*[@id='inputuin']")    eleacct.click()#点击这个文本框    ActionChains(qqmail).double_click(eleacct).perform()    eleacct.clear()    qqmail.find_element_by_xpath("//*[@id='inputuin']").send_keys(name)    qqmail.find_element_by_xpath("//*[@id='pp']").clear()    qqmail.find_element_by_xpath("//*[@id='pp']").send_keys(pwd)    #模拟点击登录    qqmail.find_element_by_xpath("//*[@id='btlogin']").click()    time.sleep(1)    #点击设置    try:        qqmail.find_element_by_xpath('/html/body/div[3]/div[2]/div[1]/div[2]/div[1]/div[1]/span[3]/a[2]').click()#定位语句去源码中找        time.sleep(1)#延时加载    except:        # 打印异常信息        print("当前登录账户异常"+name)        pass    #点击客户端设置    qqmail.switch_to.frame("mainFrame")    qqmail.find_element_by_partial_link_text("客户端设置").click()#定位语句去源码中找    time.sleep(1)#延时加载    #设置默认期限    val = qqmail.find_element_by_id("poprecent")    Select(val).select_by_value("65535")    time.sleep(1)#延时加载    #点击保存    qqmail.find_element_by_partial_link_text("保存更改").click()#定位语句去源码中找    time.sleep(1)#延时加载    #退出FORM    qqmail.switch_to.default_content()    time.sleep(1)#延时加载    #点击退出    qqmail.find_element_by_partial_link_text("退出").click()#定位语句去源码中找    time.sleep(1)#延时加载    def open_file(filename,list_id):    app = wx.App(visible=False, add_book=False) # 不打开baiexcel    print("开始处理"+filename)    wb = app.books.open(filename)    sheet = wb.sheets[0]    # 获取有值的最大行数和列数    nrows = sheet.used_range.last_cell.row    for row in range(2,nrows+1):        name = str(sheet.range((row,1)).value)        pwd = str(sheet.range((row,2)).value)        acct=[name,pwd]        list_id.append(acct)    wb.close()    app.quit()    def main():    file_name = input('输入文件:') # 文件夹位置    list_id = []    try:        qqmail = webdriver.Chrome()        qqmail.get('https://exmail.qq.com/login')        qqmail.maximize_window()        time.sleep(2)        open_file(file_name,list_id)        print(list_id)        for acct in list_id:            qqmail.refresh()             login(qqmail,acct[0],acct[1])        qqmail.quit()    except Exception as  e:        # 打印异常信息        print(e)if __name__=='__main__':    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值