• selenium+python 卸载联软客户端软件


    作为国内优秀的终端管理管理工具 联软提供了非常丰富且使用的终端管理及管控功能 

    本文想说的是如何利用联软提供的后台卸载功能 配合 selenium 实现客户端软件卸载

    需求说明: 集团有4000台终端部署联软客户端软件,但因业务及管理要求,需要调整使用范围,则需要对相关终端进行卸载。

    现状说明:联软的管理控制台默认提供了客户端软件卸载功能,但仅支持单台卸载。

    思路:通过Selenium 模拟手动操作,自动实现软件卸载工作。

    开发环境:python

    相关软件包:selenium、xlrd

    chrome 版本:85 (chromedriver 要求chrome版本一致)

    代码:#从Excel 清单获取需要删除的计算机名单

    #代码名称:Opera_Excel.py
    import
    xlrd import xlwt def R_Excel(wb_name,ws_name): # wb_name=input("请输入需要导入的表格名称:") try: wb= xlrd.open_workbook(wb_name) try: ws = wb.sheet_by_name(ws_name) return ws except: print("Failed to locate WorkSheet %s !" %ws_name) except: print("Failed to locate WorkBook %s !" %wb_name) def W_Excel(wb_name,ws_name,data): WB=xlwt.Workbook() WS=WB.add_sheet('Sheet1') i=0 for each in data: # print(each) check_Res=check_Login(each) i=i+1 WS.write(i, 0, check_Res) if i%20==0: WB.save('Excel_Workbook.xls') def Get_Info(ws): """ 用于查询工作表内的详细内容并将其所在列及的形式返回 """ line_list=list() for i in range(1,ws.nrows): if ws.cell(i,1).value: line_list.append(ws.cell(i,0).value) return line_list # def Get_info(ws): # Data_List=list() # for i in range(1,ws.nrows): # line_list=list() # for j in range(0,ws.ncols): # line_list.append(ws.cell(i,j).value) # Data_List.append(line_list) # return Data_List

    代码:#操作联软后台服务器

    # 练习通过id定位
    # 导入webdrvier
    import Opera_Excel as OE
    from selenium import webdriver
    from selenium.webdriver.support.select import Select
    import time
    from selenium.webdriver.common.action_chains import ActionChains
    Uname='a-hanhui'
    Pwd='Alstom12'
    driver = webdriver.Chrome()
    # hostname='DWTCNSSZ01FIZLZ'
    
    # 访问联软网站
    url = 'http://10.xxx.xxx.xxx:8088/manager/loginController.htm?act=login'
    driver.get(url)
    time.sleep(5)
    
    # 1、执行登陆操作
    def login_action():
        # 定位到登陆按钮
        el_Uname=driver.find_element_by_xpath('//*[@id="stroperatorname"]')
        el_Pwd=driver.find_element_by_xpath('//*[@id="strpwd"]')
        el_submit=driver.find_element_by_xpath('//*[@id="submitButtom"]')
        el_Uname.send_keys(Uname)
        print('U')
        time.sleep(1)
        el_Pwd.send_keys(Pwd)
        print("P")
        # 点击操作,前提是定位到元素
        time.sleep(1)
        el_submit.click()
    
    # 2、检查系统是否登陆状态
    def check_login():
        try:
            driver.switch_to.default_content()
            login_info=driver.find_element_by_xpath('//*[contains(text(), "a-hanhui")]')
            login_info.click()
        except:
            login_action()
    
    # 3、检查是否有弹框,如有则关闭
    def check_licInfo():
        try:
            lic_Info=driver.find_element_by_xpath('//*[@class="x-tool x-tool-close"][1]')
            lic_Info.click()
            time.sleep(1)
        except:
            pass
    
    def check_ifonline():
        try:
            # driver.find_element_by_xpath('//*[@id="datagrid-row-r3-2-0"]/td[2]/div/img[@title="UniAccess安全助手在线"]').click()
            driver.find_element_by_xpath('//*[@title="UniAccess安全助手在线"]').click()
            time.sleep(1)
            return True
        except:
    
            return False
    
    # 4、进入目录
    def opera(hostname):
        check_login()
        check_licInfo()
        driver.maximize_window()
        time.sleep(1)
        driver.find_element_by_link_text('桌面管理').click()
        time.sleep(10)
    
        driver.switch_to.frame("mainframe")  
        #点击部门
        driver.find_element_by_xpath('//*[@id="search-dev"]/span/input[1]').click()
        time.sleep(1)
    
        #设备名称
        driver.find_element_by_xpath('//*[@class="combo-panel panel-body panel-body-noheader"]/div[contains(text(), "设备名称")]').click()
        time.sleep(1)
        #输入计算机名称
        driver.find_element_by_xpath('//*[@id="input_strdevname"]/input').clear()
        driver.find_element_by_xpath('//*[@id="input_strdevname"]/input').send_keys(hostname)
        time.sleep(1)
        #搜索按钮
        driver.find_element_by_xpath('//*[@id="search-dev"]/a/span/span').click()
        time.sleep(1)
        #确认安全助手在线
        
        if check_ifonline():
            # #点击复选框按钮
            # driver.find_element_by_xpath('//*[@id="datagrid-row-r3-2-0"]/td[1]/div/input').click()
            # time.sleep(1)
            #点击控制助手按钮
            driver.find_element_by_xpath('//*[@id="devSInfo_devinfo_agent"]/span/span').click()
            time.sleep(1)
            #点击卸载按钮
            driver.find_element_by_xpath('//*[@id="Lv7000_uninstallAgent"]/div').click()
            time.sleep(1)
            #点击卸载按钮
            time.sleep(1)
            driver.switch_to.default_content()
            driver.find_element_by_xpath('//*/button[contains(text(), "是")]').click()
            driver.refresh()
            check_licInfo()
    
        else:
            print("host: %s is not on line" % hostname)
    
    
    if __name__ == '__main__':
        # main()
    
        WB_Name='Devicelist.xlsx'
        WS_Name='PC_List'
    
        WS_Info=OE.R_Excel(WB_Name,WS_Name)
        data=OE.Get_Info(WS_Info)
        for each in data:
            # print(each)
        # check_login()
            opera(each)

    参考文档:selenium之 定位以及切换frame(iframe)

  • 相关阅读:
    ElasticSearch——分页查询
    Canal——写入到ES中数据错乱
    HBase管理与监控——WebUI
    '$.browser.msie' 为空或不是对象
    input file 获取不到Request.Files 解决办法
    .NET读取服务器或本地文件
    .NET将服务器文件导出
    .Net 中HashTable,HashMap 和 Dictionary<key,value> 和List<T>和DataTable的比较
    JavaScript跨域调用基于JSON的RESTful API
    WCF项目问题2-无法激活服务,因为它需要 ASP.NET 兼容性。没有未此应用程序启用 ASP.NET 兼容性。请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode 属性设置为 Required 以外的值。
  • 原文地址:https://www.cnblogs.com/vmsky/p/13672187.html
Copyright © 2020-2023  润新知