• @xlth1947 不客气😀

  • @lbxoqy 不客气.😀

  • @lose 😊

    @seveniruby 谢谢思寒加精。✨

    • 在中文前面加个
    'name':u'先生',
    

    试一下。

    可以使用fiddler 抓包下你post 的数据,查看下是否正确。Inspectors→webForms→bodydata

  • 漫漫人生路,加油啊,前辈!

  • @wenju.luo
    学习能力才最重要

    E.g:
    董伟明《Python Web 开发实战》作者,就职于豆瓣,高级产品开发工程师
    学历:大专
    专业:烹饪工艺与营养(神奇吧!)

    PS:每当自己不想学的时候,就想下,哇,这样都行!还是乖乖的去学习了。

  • @601068603 对于手机短信验证码获取不太懂,代码可以稍微该下。本地没尝试,你可以试试看哦!

    def getCodeFromSms(timeout=20):
        os.system("adb logcat -c")
        cmd = ' adb logcat -d |findstr D/Mms/Txn'
        n = 0
        while n < timeout:
            smscode = os.popen(cmd).read()
            print(smscode)
            if smscode != " ":
                smscode = smscode.split("验证码:")[1].split(",")[0]
                print("code is {}:".format(smscode))
                break
            else:
                time.sleep(1)
                n += 1
                print('已等待:{}秒'.format(n))
                continue
        print('短信接收失败!')
    
  • #6楼 @pyattack 如果是UI层的自动化,这么设计,相对已经算是比较灵活了啊,不知道你说的这种方式太死板,目前的疑惑主要是如何比较好的进行数据驱动,把用例和数据分离开来,还指哪些?是说封装好后,case调用,写的样式都差不多吗?
    你希望这样?:

    
    test001:
          - ID:search
          - value:vaules
          - action:search
    

    然后各种封装后调用

    def case():
        #定位location()
        #输入send_keys()
        #执行动作action()
    

    data驱动case

  • 自己理解的PO设计模式,大概这样:

    1.元素定位

    elements.py

    def find_element(*loc):
        return driver.find_element(*loc)
    
    def send_params(value,ipt_element):
        return ipt_element.send_keys(value)
    
    def click_btn(*loc):
        return driver.find_element(*loc).click()
    

    2.定位器

    单独写在配置文件中,yaml,xml,ini,config等

    locators.py

    login_username = (By.ID,'username')
    search_btn = (By.ID,'search')
    .....
    

    3.每个页面封装该page经常使用到的元素或操作

    例如首页搜索功能

    homePage.py

    def search_action(value):
         search_ipt = find_element(locators.search_ipt)
         search_btn = find_element(locators.search_btn)
         send_params(value,search_ipt) 
         click_btn(search_btn)
         return value in driver.page_source
    

    例如购物车页面的立即结算按钮

    buyCartPage.py

    def order_cart():
          click_btn(find_element(*loc))
    

    4.测试用例

    testCase.py

    def test_search( ):
          assertTrue search_action()
    
    
    def test_order_placing():
          ....
          add_cart()
          ....
          #点击结算
          order_cart()
          ....
          assertTrue('success' in page)
    

    以上代码写的粗略,主要表达设计思路,感觉PO的设计就是层层递进。
    好处就是尽可能把易变的东西分离出来,以保证整体稳定性。谢谢

  • 点击Tools→View RIDE log ,查看下报错信息。

0x7C00.