• 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包就行。

  • 相关阅读:
    SqlHelper处理类
    你必须知道的ADO.NET(五) 细说数据库连接池
    你必须知道的ADO.NET(三) 连接字符串,你小觑了吗?
    从零开始学习ASP.NET MVC 入门
    ASP.NET MVC3 系列教程 目录
    .NET获取英文月份缩写名(可获取其他国家)
    你必须知道的ADO.NET(二)了解.NET数据提供程序
    良好的C#编程习惯
    你必须知道的ADO.NET(一) 初识ADO.NET
    mvc中使用一个action对多个不同名字段做remote验证
  • 原文地址:https://www.cnblogs.com/nemolmt/p/6212881.html
Copyright © 2020-2023  润新知