大家好,欢迎来到IT知识分享网。
1.Toast简介
Toast是Android系统中的一种消息框类型,它属于一种轻量级的消息提示框类型,常常以小弹框的形式出现,一般出现1~2秒回自动消失。它可以出现在屏幕中任意位置。它不同于Dialog(对话框),它没有焦点。Toast的设计思想是尽可能地不引人注意,同时还想用户显示信息,并希望用户可以看到。
测试App下载地址:
https://GitHub 网站/appium/sample-code/raw/master/samlpe-code/apps/ApiDemos/bin/ApiDemos-debug.apk。
首先将上面地址的apk包下载到本地计算机上,并安装到模拟器中;在模拟器中打开API Demos,依次点击 “ Views” →“Popup Menu” →“Make a Popup”→“Search”项,就会弹出消息提示框,如图5-18所示。
图5-18中“Clicked popup menu item Search”就是 Toast,它通常在页面上停留的时间只有2秒左右,测试中用Appium Inspector一般不容易获取到这个提示框元素。
2.获取Toast
在模拟器中打开API Demos,依次点击 “ Views” →“Popup Menu”→ “Make a Popup”→“Search”项,查找页面的Toast元素。
(1)Python演示代码
# 设置 capabilities caps = {} caps["platformName"] = "Android" caps["appPackage"]="io.appium.android.apis" caps["appActivity"] = ".ApiDemos" #必须使用 UiAutomator2框架 caps["automatorName"]="uiautomator2" caps["deviceName"]="hogwarts" #与Appium Server 建立连接 driver = webdriver.Remote("http://localhost:4723/wd/hub",caps) #设置隐式等待 driver.implicitly_wait(5) #点击Views项 driver.find_element_by_accessibility_id("Views").click() #滑动页面 TouchAction(driver).press(380,1150)\ .move_to(380,150).release().perform() #点击'Popup Menu'项目 driver.find_element_by_xpath( "///[@content-desc='Popup Menu']").click() #点击'Make a Popup!'项 driver.find_element_bu_xpath( "//*[@content-desc=='Make a Popup!']").click() #点击'Search'项 driver.find_element_by_xpath("//*[contains(@test,'Search')]").click() toastXPath = "//*[@class='android.wight.Toast']" #打印totastXPath print(driver.find_element_by_xpath(toastXPath)) #打印toastXPath 获取的text print(driver.find_element_by_xpath(toastXPath).text)
(2)Java演示代码
@BeforeAll public static void setuo() throws MalformedURLException{ DesiredCapabilities desiredCapabilities = new DesiredCapabilities(); desiredCapabilities.setCapability("platfromName","Android"); desiredCapabilities.setCapability("appPackage","io.appium.android.apis"); desiredCapabilities.setCapability("appActivity",".ApiDemos"); desiredCapabilities.setCapability("automationName","uiautomator2"); desiredCapabilities.setCapability("deviceName","hogwarts"); URL remoteUrl = new URL("http://127.0.0.1:4723/wd/hub"); driver = new AndroidDriver(remoteUrl,desiredCapabilities); driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS); } @Test public void toastTest(){ //点击Views项 driver.findElement(MobileBy.AccessibilityId("views")).click(); //滑动页面 TouchAction action = new TouchAction(driver); PointOption pressPointOne = PointOption.point(380,1150); PointOption pressPointOne = pointOption.point(380,150); action.press(pressPointOne).moveTo(movePointOne).release(); //点击'Popup Menu'项目 driver.findElement(By.xpath("//*[@contest-desc='Popup Menu']")).click(); //点击'Make a Popup!'项目 driver.findElement(By.xpath("//*[@content-desc='Make a Popup!']")).click(); //点击'Search'项 driver.findElement(By.xpath"//*[@contains(@text,'Search')"])).click(); By toastXPath = By.xpath("//*[@class='android.widget.Toast']"); //打印 toastXPath System.out.println(driver.findElement(toastXPath)); //打印 toastXPath 获取的text System.out.println(driver.findElement(toastXPath)); //打印 toastXPath获取的text System.out.println(driver.findElement(toastXPath).getText()); }
上述代码中定位Toast使用了XPath表达式,因为Toast的class属性比较特殊,页面中一般会出现一次 class=“android.widget.Toast”的元素,所以使用XPath定位方式搭配隐式等待就可以很轻松地定位到Toast。
上述代码执行结果如下。
[[Android: uiautomator2] -> xpath://*[@class='android.widget.Toast']] Clicked popup menu item Search PASSED:testToast
搜索微信公众号:TestingStudio霍格沃兹的干货都很硬核
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/91499.html