【拉勾6期】企业微信web端自动化测试实战

标题

web 企业微信实战(二)

课程价值

  • 了解 PageObject 原理及六大原则
  • 掌握PageObject 封装思想
  • 使用分层思想封装框架
  • 灵活运用三种等待方式

大纲

  • PageObject 原理及六大原则
  • PageObject 封装思想
  • 使用分层思想封装框架
  • 三种等待方式
  • 企业微信实战

时长

120分钟

PPT

脚本编写

应用

PO 六大原则

三种等待方式

  • 强制等待:sleep(3) 不推荐
  • 隐式等待:self.driver.implicitly_wait(3) , 所有的find_element方法都生效
  • 显式等待:WebDriverWait(self.driver, 10).until() 等待某一个元素出现

参考代码

https://github.com/ceshiren/HogwartsLG6

封装基类

base_page.py

class BasePage:
    base_url = ""

    def __init__(self, driver: WebDriver = None):
        if driver == None:
            # 复用浏览器,需要设置 option.debugger_address
            option = Options()
            option.debugger_address = "127.0.0.1:9222"
            self.driver = webdriver.Chrome(options=option)
            # 创建完driver , 立刻设置隐式等待
            self.driver.implicitly_wait(5)
        else:
            self.driver = driver

        if self.base_url != "":
            self.driver.get(self.base_url)

    def find(self,locator, value):
        return self.driver.find_element(locator,value)

    def finds(self,locator, value):
        return self.driver.find_elements(locator,value)

    def wait_for_click(self,timeout,locator):
     WebDriverWait(self.driver,timeout).until(expected_conditions.element_to_be_clickable(locator))


  • 首先判断 driver 是否为None,如果为None,创建一个driver, 否则 ,用已有的driver

作业

  • 完成添加联系人PO封装

课后反馈调查表

第五阶段

直播课作业

老师,请查收作业:https://github.com/tangyihuai/HGWZLG6

老师本次作业请查收

https://github.com/Mr-ZhangChenxu/selenium_homework/tree/master/wecom_addmember

1 个赞

本次作业请老师查收
https://github.com/Guoxiang1992/Code/tree/main/web_po_homework

本次作业请查收:https://github.com/WangHao27/selenium_study/tree/master/web

1 个赞

请老师查收:
https://github.com/chh08/lianxirenPO.git

老师请查收,https://github.com/fatfatfatFatTiger/HogwartsLG6

1 个赞

selenium_web自动化_企业微信自动化测试实战——直播作业(stage5)

1 个赞

隐式等待最好是driver 创建完之后就设置 ,这样会全局生效。

作业做的不错

测试报告 目录最好放在项目根目录下。

思路不错。加入了翻页验证。

也可以拿到页数比如 1/3, 判断 前面的数字是否跟后面的数字相同,如果相同,就退出循环。

你这样写有个问题,就是如果你添加的联系人在第一页,它也会翻到最后一页,获取完所有的姓名 ,再返回,如果有几十页,效率就会很低。

建议:
可以传入一个参数,在while里做判断 ,判断这个人存在 ,就return True,
另一个判断条件是,如果翻页完成,就 return False.

init() 方法不要写的过于复杂。

完成的不错。

尽量减少使用显式等待。

find 方法可以加try except,加了之后要对异常做特殊的处理,不要只打印 一下日志 ,那样会继续执行后面的操作。影响后面的测试。

1、隐式等待设置一次就可以
2、数据尽量统一管理 ,可以专门创建一个文件夹来保存数据。

老师请查收作业:selenium_homework/POselenium at master · pipidankaqiu/selenium_homework · GitHub