• selendroid项目实战2--ruby下的TOAST定位


    网上很多 python/java捕获toast的方法,但ruby的简直没见过。

    selendroid客户端是基于selenium,而不一定需要appium,所以很多selenium的方法可以直接使用,想到这点 那就很多方法可以去尝试了。

    事实上:TOAST使用selendroid也是没法定位,而是借用 PARTIAL_LINK_TEXT(部分匹配text) 或者LINK_TEXT(全词匹配)

    使用wait方法 等待text出现。(此方法使用selendroid才能定位到,appium没法定位,具体原因是uiautomation框架的缺陷问题)

    例如:

    python下 toast 信息判断。

    from appium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC

    appPATH="E:\APP\app-debug_3.1.3.876.apk"
    desired_caps={
    'platformVersion':'4.0',
    'deviceName':'',
    'udid':'a6522c88',
    'platformName':'android',
    'automationName':'Selendroid',
    'app':appPATH,
    'appPackage':'com.tenda.router.app',
    'appActivity':'.activity.Anew.Splash.SplashActivity',
    'newCommandTimeout':3600,
    }
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)


    element =WebDriverWait(self.driver,10).until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT,u"保存成功")))
    def find_toast(self,message):
    try:
    element = WebDriverWait(self.driver,10).until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT,message)))
    return True
    except:
    return False

    关键语句就是代码中的黑体部分。

    类似的,使用ruby

    rv=Selenium::WebDriver::Wait.new({:timeout => 5}).until{$b.find_element(:link_text => '保存成功')}

    rv=Selenium::WebDriver::Wait.new({:timeout => 5}).until{$b.find_element(:partial_link_text=> '保存成功')}

    其中timeout是wait的超时时间。

    rv==err时,定位失败。

    rv!=err时,定位成功。

    java等其他方法定位也应该是一样,有selenium包就行。

  • 相关阅读:
    Path Sum
    【转】Python的神奇方法指南
    【转】浅析Python中的struct模块
    【转】Python之系统交互(subprocess)
    【转】Win10下python3和python2多版本同时安装并解决pip共存问题
    【转】python包导入细节
    【转】python 历险记(四)— python 中常用的 json 操作
    【转】python模块导入细节
    【转】python 内置函数总结(大部分)
    【转】MySQL-Select语句高级应用
  • 原文地址:https://www.cnblogs.com/nemolmt/p/6212881.html
Copyright © 2020-2023  润新知