• Python基于selenium实现禅道导出上周BUG记录


    1. from selenium import webdriver
    2. from selenium.webdriver.chrome.service import Service
    3. from selenium.webdriver.common.by import By
    4. import time #定时
    5. from selenium.webdriver.support.select import Select #下拉框选择
    6. import datetime #当前日期
    7. from time import strftime #当前日期
    8. from selenium.webdriver.common.keys import Keys #为了在webdriver中按ESC键
    9. import pandas as pd
    10. import os
    11. option = webdriver.EdgeOptions()
    12. option.binary_location = r'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe' #这里添加edge的启动文件=>chrome的话添加chrome.exe的绝对路径
    13. diy_prefs = {'profile.default_content_settings.popups': 0,
    14. 'download.default_directory': r'C:\Users\Administrator\Desktop\\'}
    15. # 设置下载路径到selenium配置中
    16. option.add_experimental_option('prefs', diy_prefs)
    17. driver = webdriver.Edge(service=Service(r'D:\Python39\msedgedriver.exe'),options=option) #这里添加的是driver的绝对路径,驱动去微软官网下载
    18. driver.get('http://192.168.1.xxx:xxxx/zentao/user-login.html') #打开禅道登录页
    19. driver.maximize_window()
    20. #输入账号
    21. driver.find_element(By.ID, 'account').send_keys('zhanghao')
    22. #driver.find_element 的新语法样式。
    23. #输入密码
    24. driver.find_element(By.NAME, 'password').send_keys('mima')
    25. #driver.find_element(By.Name, 'loginUsername')
    26. #点击登录
    27. driver.find_element(By.ID,'submit').click()
    28. time.sleep(1)
    29. #跳转到全部BUG列表 菜单路径:测试>bug>所有
    30. driver.get("http://192.168.1.xxx:xxxx/zentao/bug-browse-9-0-all.html")
    31. #点击搜索 放大镜图标那个显示查询条件
    32. driver.find_element(By.ID,'bysearchTab').click()
    33. time.sleep(1)
    34. #选择解决日期 大于等于是上周三
    35. driver.find_element(By.LINK_TEXT,'Bug标题').click()
    36. time.sleep(1)
    37. driver.find_element(By.CSS_SELECTOR,'.active-result:nth-child(31)').click()
    38. #选择解决时间条件
    39. Select(driver.find_element(By.ID,'operator1')).select_by_value(">=")
    40. #计算上周三日期
    41. today = datetime.date.today()
    42. if today.weekday()+1>3:
    43. last_wednesday=today-datetime.timedelta(7+((today.weekday()+1)-3))
    44. elif today.weekday()+1<3:
    45. last_wednesday=today-datetime.timedelta(7-(3-(today.weekday()+1)))
    46. else:
    47. last_wednesday=today-datetime.timedelta(7)
    48. print('上周三是',last_wednesday)
    49. driver.find_element(By.CSS_SELECTOR,'#value1').send_keys(last_wednesday.strftime("%Y%m%d"))
    50. #这个地方日期组合控件有坑,原思路是点击录入框在日期控件选日期,后来发现可以直接给录入框赋值。
    51. time.sleep(1)
    52. driver.find_element(By.CSS_SELECTOR,'#value1').send_keys(Keys.ESCAPE)
    53. #这个是为了解决赋值后,弹出日期控件的问题,不过应该可以省略掉,在下一步操作日期控件会消失。
    54. #选择解决日期 结束小于本周三
    55. driver.find_element(By.LINK_TEXT,'重现步骤').click()
    56. time.sleep(1)
    57. driver.find_element(By.CSS_SELECTOR,'#field4_chosen > div > ul > li:nth-child(31)').click()
    58. #选择解决时间条件
    59. Select(driver.find_element(By.ID,'operator4')).select_by_value("<")
    60. #计算本周三日期
    61. if today.weekday()+1>3:
    62. now_wednesday=today-datetime.timedelta((today.weekday()+1)-3)
    63. elif today.weekday()+1<3:
    64. now_wednesday=today+datetime.timedelta(3-(today.weekday()+1))
    65. else:
    66. now_wednesday=today
    67. print('本周三是',now_wednesday)
    68. driver.find_element(By.CSS_SELECTOR,'#value4').send_keys(now_wednesday.strftime("%Y%m%d"))
    69. time.sleep(1)
    70. driver.find_element(By.CSS_SELECTOR,'#value4').send_keys(Keys.ESCAPE)
    71. #点击蓝色搜索
    72. driver.find_element(By.ID,'submit').click()
    73. time.sleep(1)
    74. #点击导出
    75. driver.find_element(By.CSS_SELECTOR,".btn-group:nth-child(2) > .btn-link").click()
    76. #点击导出数据
    77. driver.find_element(By.LINK_TEXT,"导出数据").click()
    78. time.sleep(1)
    79. filename=datetime.datetime.now().strftime('%Y年%m月%d日')
    80. filename=filename+"解决BUG清单周报"
    81. #输入文件名
    82. driver.switch_to.frame(1) # 1.用frame的index来定位,第一个是0
    83. # driver.switch_to.frame("frame1") # 2.用id来定位
    84. # driver.switch_to.frame("myframe") # 3.用name来定位
    85. # driver.switch_to.frame(driver.find_element_by_tag_name("iframe")) # 4.用WebElement对象来定位
    86. driver.find_element(By.CSS_SELECTOR,'#fileName').click()
    87. driver.find_element(By.CSS_SELECTOR,'#fileName').send_keys(filename)
    88. #点击导出
    89. driver.find_element(By.ID,'submit').click()
    90. time.sleep(5)
    91. CSV_fileName=r'C:\Users\Administrator\Desktop\\'+filename+r'.csv'
    92. file_name, old_extension = os.path.splitext(filename)
    93. EXCLE_fileName=r'C:\Users\Administrator\Desktop\\'+file_name+r'.xlsx';
    94. # 读取 CSV 文件并转换为 DataFrame
    95. df = pd.read_csv(CSV_fileName,index_col=False,encoding='utf-8')
    96. #这个地方也是个坑原先写的是index_col=None 会导致转换到EXCEL丢失BUG编号内容
    97. # 将 DataFrame 保存为 XLSX 文件
    98. df.to_excel(EXCLE_fileName, index=False)
    99. time.sleep(20)
    100. driver.quit()

    python 库版本语法不一致真坑人。

    本人代码水平一般,此段代码基于搜索引擎和AI实现。

    ps:新手可以依靠AI写出可用的程序,非常方便容易上手。

  • 相关阅读:
    JavaScript迭代器模式
    第2-4-3章 规则引擎Drools基础语法-业务规则管理系统-组件化-中台
    go-fastdfs分布式文件存储集群搭建和测试
    新势力 | 赛宁工控防火墙 筑牢关基设施防护围墙
    Cmder: 懒癌必备!从此告别记事本记命令的日子
    玩具品牌的国际化之路:市场推广战略解析
    6-3 求链式表的表长分数 10
    NoSQL之Redis配置与基础命令
    redis缓存穿透、击穿、雪崩
    神经网络与深度学习(三):循环神经网络网络
  • 原文地址:https://blog.csdn.net/bobodadao/article/details/133342131