• 感觉大哥完全没读题

  • “员工数量你们想按谷歌的开发测试比,员工质量你们能跟人比吗?”

  • 很有道理

  • 啥时候公布啊?或者用你们的解释权解释一下

  • 今年:
    1.年初疫情在家在办,每天晚上看一节微积分课程
    2.看了四分之一的课程觉得理解度太低,改练题,买了《托马斯的微积分》开练
    3.练了 3、4 个月,写完了几个练习本(当然间距比较大),当中也学了一些线性代数
    5.6 月左右开始看吴恩达的机器学习课程,看了一个多月,有理解有不懂的,也不知道如何落地,机器学习方面的努力搁置……(感觉上办年的收获就是再看同事发的算法题感觉极其自信)
    6.看了两三个月各学科有兴趣的书,解惑和增长知识
    7.开始着手开搞接口自动化测试,搞完接口自动化之后发现自己对于接口测试的提升极大。
    8.最近开搞 WEB 的 UI 自动化回归,今天开搞 app 的。
    下一步:
    搞测试平台,把 UI 和接口自动放上去,再看看怎么和 jenkins 接合一下部署个定期的脚本。
    刚看了楼主的:“集成 Chrome 插件 可以让业务测试执行的时候自动生成业务自动化脚本”,我觉得我也可以搞一下

  • 数据变动很正常,变动就得维护脚本,这不应该算问题,应该算在自动化之初就考虑的成本

  • 如题:当在后台做相应操作前端会改变界面或数据
    这种场景我觉得可以使用接口结合 UI 自动化的方式对功能进行测试
    分为三步:

    首先,后台作为动作的发起方,先对后台进行测试:使用 WEB 自动化操作后台后,通过数据库对数据进行查询验证后台的操作是否成功
    第二步是测试移动端前台:直接通过调用接口模拟后台操作,查看移动端前台页面或数据是否有改变
    第三步是联合测试(纯模拟用户实际使用):使用 web 自动化操作后台,并使用移动端自动化来验证前台是否正常确响应
    单回答这个问题的话,是用这种分层的形式进行测试。

    然后讨论实际应用中可能遇到的问题是:
    如何管理这种串联形式的用例?
    每测一个点都要三步感觉会不会用到的数据有些复杂?那我们把用例要用到的数据先用替代方式表现出来:
    1.A1 A2
    2.B1 B2
    3.A1 B2(第三步用到的数据和前两步有重合)
    并且由于每三步实际只测试了一个功能点,所以可以将 A1 A2 B1 B2 列为一条用例数据。
    测试脚本只需要对对应位置的数据进行存取即可。

  • 看了一下报错,确实是点击不到,报的是 ElementClickInterceptedException,
    加了一句
    driver.execute_script("arguments[0].click();", loc)
    就好了。
    大佬你是怎么一下就发现是可以定位到但是点击不到的?

  • 从 HelloWorld 说开去 at 2020年12月02日

    孙总是实力网红,不用帮他们挡子弹

  • 就是说按钮虽然加载完了,但是按钮的点击动作的 js 方法还没加载完毕,是这个意思吗?

  • 嗯,全文看下来感觉自己还差不少

  • 问题 1 考不考虑在 teardown 里直接删除所有数据

  • 嗯嗯,互相帮助共同进步

  • 确实是这样,我刚也看了下底层代码,跟大佬说的一模一样,大佬帮我解答问题还特意查看了底层代码真是感谢!

  • 军规看了两遍,确实香啊大佬,感觉就像避雷针指南针

  • OK 啦,感谢大佬!


  • 大佬请教一下,我现在是修改成这样了,但是这三个控件我怎么做描述呢?就是怎么标识这三个控件的名称,我就一行代码定位再操作的话之后容易忘了这个控件是干嘛用的了。我现在想的是把结果付给一个能描述控件的变量,但是感觉这个变量付了值也没有用。另一个方法就是不付变量,直接每个定位和操作都加一行描述控件的注释。大佬觉得怎么做合适点呢?

  • Traceback (most recent call last):
    File "", line 1, in
    File "C:\Program Files\JetBrains\PyCharm 2019.1\helpers\pydev_pydev_bundle\pydev_umd.py", line 197, in runfile
    pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
    File "C:\Program Files\JetBrains\PyCharm 2019.1\helpers\pydev_pydev_imps_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
    File "C:/Users/Administrator/PycharmProjects/untitled2/UIAuto/pingtaipage.py", line 110, in
    org.checkname()
    File "C:\Users\Administrator\PycharmProjects\untitled2\UIAuto\basepage.py", line 20, in checkname
    '#map > div.main-wrapper > div > div > div.sticker > div > div > div.ivu-table-wrapper > div > div.ivu-table-body > table > tbody > tr > td:nth-child(3) > div > span'), u'hahaha')
    File "C:\Users\Administrator\PycharmProjects\untitled2\venv\lib\site-packages\selenium\webdriver\support\wait.py", line 71, in until
    value = method(self.driver)
    File "C:\Users\Administrator\PycharmProjects\untitled2\venv\lib\site-packages\selenium\webdriver\support\expected_conditions.py", line 209, in __call
    _
    element_text = _find_element(driver, self.locator).text
    File "C:\Users\Administrator\PycharmProjects\untitled2\venv\lib\site-packages\selenium\webdriver\support\expected_conditions.py", line 411, in _find_element
    return driver.find_element(*by)
    TypeError: find_element() takes from 1 to 3 positional arguments but 13 were given

    以上是堆栈,实际报错的就是 basepage 那第 20 行的代码。

    def checkname(self):
    return WebDriverWait(self.driver, 10).until(EC.text_to_be_present_in_element(By.CSS_SELECTOR,
    '#map > div.main-wrapper > div > div > div.stic'
    'ker > div > div > div.ivu-table-wrapper > div > di'
    'v.ivu-table-body > table > tbody > tr > td:nth-child(3) > div > span'), u'hahaha')

    这个是报错的代码,我觉得可能是 css 的字串符传的问题,改成一行串也还是报 but 13 were given,我都不知道这个 13 究竟是指哪里了。。

  • O 啦 K,多谢大佬!

  • 哦哦,那页面元素定位信息还用每个元素给它一个方法吗?还是直接在 PO 里定义变量,然后用业务操作函数直接操作类里的变量

  • 哦哦,那就等于是把我 case 里面对元素的操作都放进了 login 方法里,所以 case 就变成了直接调用类的方法就可以了

  • 说的太对了,我还铁了心了学了半年数学,完了看了 1/3 的吴恩达机器学习视频,也没整明白从哪入手

  • 方法可够机智的,谢谢大神啦~

  • 谢谢啦

  • 怎么查 toast 的 xpath 啊,toast 就出来一瞬间就没了,去 copy xpath 都反应不过来