新版appium繪製九宮格的一個注意點

來源:互聯網
上載者:User

標籤:cti   message   ppp   expec   idc   size   star   分享   ppa   

在用appium-desktop-setup-1.6.2進行app手勢密碼設定時,發現move_to(x, y)相對位移量的方法用不了,繪製的手勢也是亂跑

還會拋一個錯誤

selenium.common.exceptions.InvalidCoordinatesException: Message: Coordinate [x=-210.0, y=210.0] is outside of element rect: [0,0][720,1280]

代碼如下

from appium import webdriverfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom appium.webdriver.common.mobileby import MobileByfrom appium.webdriver.common.touch_action import TouchActionfrom time import sleep# 由你主動來告訴appium server,我要操作哪個裝置上的哪個app# Desired Capabilites,索引值對,鍵名都是已經定義好的# 操作對象的資訊準備desired_caps={}# 使用的手機作業系統desired_caps["platformName"] = "Android"# 手機作業系統的版本desired_caps["platformVersion"]="5.1.1"# 使用的裝置名稱字或模擬器的類型desired_caps["deviceName"]="Android Emulator"# app資訊desired_caps["appPackage"]="com.xxzb.fenwoo"#進入的介面desired_caps["appActivity"] = ".activity.addition.WelcomeActivity"# 串連appium server,並告訴其要操作的對象driver=webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘,desired_caps)# 擷取螢幕尺寸size=driver.get_window_size()for x in range(0,4):    # 向左滑動    driver.swipe(size["width"]*0.9,size["height"]*0.5,size["width"]*0.1,size["height"]*0.5,500)    # 向右滑動    # driver.swipe(size["width"]*0.1,size["height"]*0.5,size["width"]*0.9,size["height"]*0.5,500)    sleep(1)# 點擊立即體驗WebDriverWait(driver,20,1).until(EC.visibility_of_element_located((MobileBy.ID,"com.xxzb.fenwoo:id/btn_start")))driver.find_element_by_id("com.xxzb.fenwoo:id/btn_start").click()# 等待WebDriverWait(driver,30,1).until(EC.visibility_of_element_located((MobileBy.ID,"com.xxzb.fenwoo:id/btn_login")))# 點擊登入註冊按鈕driver.find_element_by_id("com.xxzb.fenwoo:id/btn_login").click()# 等待WebDriverWait(driver,30,1).until(EC.visibility_of_element_located((MobileBy.ID,"com.xxzb.fenwoo:id/et_phone")))# 輸入使用者名稱driver.find_element_by_id("com.xxzb.fenwoo:id/et_phone").send_keys("XXXXXX")# 點擊下一步driver.find_element_by_id("com.xxzb.fenwoo:id/btn_next_step").click()# 等待WebDriverWait(driver,30,1).until(EC.visibility_of_element_located((MobileBy.ID,"com.xxzb.fenwoo:id/et_pwd")))# 輸入密碼driver.find_element_by_id("com.xxzb.fenwoo:id/et_pwd").send_keys("XXXXXX")# 點擊確定按鈕driver.find_element_by_id("com.xxzb.fenwoo:id/btn_next_step").click()# 等待WebDriverWait(driver,30,1).until(EC.visibility_of_element_located((MobileBy.ID,"com.xxzb.fenwoo:id/btn_confirm")))# 馬上設定driver.find_element_by_id("com.xxzb.fenwoo:id/btn_confirm").click()# 等待WebDriverWait(driver,30,1).until(EC.visibility_of_element_located((MobileBy.ID,"com.xxzb.fenwoo:id/btn_gesturepwd_guide")))# 立即建立driver.find_element_by_id("com.xxzb.fenwoo:id/btn_gesturepwd_guide").click()# 等待WebDriverWait(driver,30,1).until(EC.visibility_of_element_located((MobileBy.ID,"com.xxzb.fenwoo:id/right_btn")))# 確定按鈕driver.find_element_by_id("com.xxzb.fenwoo:id/right_btn").click()# 手勢繪製頁面ta=TouchAction(driver)# 擷取九宮格的起點座標和大小ele=driver.find_element_by_id("com.xxzb.fenwoo:id/gesturepwd_create_lockview")size=ele.size# 擷取座標start_point=ele.locationta.press(x=start_point["x"]+size["width"]*1/6,y=start_point["y"]+size["height"]*1/6).wait(200).    move_to(x=size["width"]*2/6,y=0).wait(200).    move_to(x=size["width"]*2/6,y=0).wait(200).    move_to(x=-size["width"]*2/6,y=size["width"]*2/6).wait(200).    move_to(x=0,y=size["width"]*2/6).wait(200).release().wait(200).perform()# 等待# WebDriverWait(driver,30,1).until(EC.visibility_of_element_located((MobileBy.ID,"com.xxzb.fenwoo:id/right_btn")))# 點擊繼續driver.find_element_by_id("com.xxzb.fenwoo:id/right_btn").click()

而且一個奇怪的現象是第一個圓圈的座標點是(150, 379),相對位移(210, 0)之後得到的座標是(210, 640)

後來嘗試著

ta.press(x=0, y=0).release().perfrom()

神奇的發現(0, 0)點竟然是(360, 640)這個位置

如果嘗試press(x=0, y=10)得到的座標點是(360, 10), press(x=10, y=0),得到的座標點是(10, 640),只有當press(x=10, y=10)的時候得到的才是(10, 10),這樣就可以解釋上面x=210, y=0, 為什麼是(210, 640)了。看來x或y不能為0,不然會跑偏

這個問題目前已經報bug,bug地址為:https://discuss.appium.io/t/set-gesture-password-and-show-pressed-coordinate-error-using-1-6-2-appium-desktop-on-android-simulator/22858

 

 

目前的解決辦法是利用絕對座標定位,修改的代碼如下:

ta.press(x=start_point["x"]+size["width"]*1/6,y=start_point["y"]+size["height"]*1/6).wait(200).    move_to(x=start_point["x"]+size["width"]*3/6, y=start_point["y"]+size["height"]*1/6).wait(200).    move_to(x=start_point["x"]+size["width"]*5/6, y=start_point["y"]+size["height"]*1/6).wait(200).    move_to(x=start_point["x"]+size["width"]*3/6, y=start_point["y"]+size["width"]*3/6).wait(200).    move_to(x=start_point["x"]+size["width"]*3/6, y=start_point["y"]+size["width"]*5/6).wait(200).release().wait(200).perform()

 

新版appium繪製九宮格的一個注意點

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.