51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3292|回复: 6
打印 上一主题 下一主题

[求助] Day5-6测试积点任务

[复制链接]
  • TA的每日心情
    无聊
    4 天前
  • 签到天数: 523 天

    连续签到: 5 天

    [LV.9]测试副司令

    跳转到指定楼层
    #
    发表于 2018-5-24 15:39:58 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    1测试积点
    问题:
    点击事件后。如何等待下一个 page 加载完成?或者等待某几个元素种出现其中一个?
    比方说点击登录按钮后。因为服务器验证登录和网络延迟需要等待一段事件后判断是否登录
    成功?或者是其他状态。比如出现验证码。或者其他提示操作之类的。


    我如何判断出现的是什么提示?并且做后续操作?


    已经用
    CalculatorSession.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2)); 延
    迟2秒。
    但是我后续用
    CalculatorSession.FindElementByName("确定").Click();


    if( CalculatorSession.PageSource.Contains("登录成功"))
    CalculatorSession.FindElementByName("登录成功").Click();


    这样的方法感觉在执行 if( CalculatorSession.PageSource.Contains("登录成功"))的时候并
    没有延迟。而是直接非false了。。
    当然这里只是一个例子。出现的可能会是登录成功。密码错误。需要验证码。错误过多。账
    号被精等等其他内容。我需要逐一处理。。当然由于网络延迟的不确定性。所以不希望直接
    steep


    PS。也无法通过判断一个textbox中的文字来判断状态。因为可能每种状态返回的page不一样。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:35
  • 签到天数: 1797 天

    连续签到: 1 天

    [LV.Master]测试大本营

    6#
    发表于 2018-5-25 13:38:28 | 只看该作者
    增加判定条件
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:51
  • 签到天数: 2808 天

    连续签到: 1 天

    [LV.Master]测试大本营

    5#
    发表于 2018-5-25 10:57:49 | 只看该作者
    添加判断
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 10:04
  • 签到天数: 1512 天

    连续签到: 1 天

    [LV.Master]测试大本营

    4#
    发表于 2018-5-25 10:16:14 | 只看该作者
    增加判定条件
    回复

    使用道具 举报

  • TA的每日心情
    开心
    4 天前
  • 签到天数: 473 天

    连续签到: 2 天

    [LV.9]测试副司令

    3#
    发表于 2018-5-25 09:55:05 | 只看该作者
    增加判定条件
    回复

    使用道具 举报

  • TA的每日心情

    2024-7-8 09:00
  • 签到天数: 943 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2018-5-25 09:48:21 | 只看该作者
    临时解决办法是登录后直接steep 60秒。然后看PageSource种包含的内容来判断。但是这样每次操作也需要60秒。。
    回复

    使用道具 举报

  • TA的每日心情

    2024-7-8 09:00
  • 签到天数: 943 天

    连续签到: 1 天

    [LV.10]测试总司令

    1#
    发表于 2018-5-25 09:48:08 | 只看该作者
    ava实现
    写一个类,继承FluentWait,例如:
    public class AppiumDriverWait extends FluentWait
    构造方法:
    public AppiumDriverWait(AppiumDriver driver, long timeOutInSeconds) {
    this(driver, new SystemClock(), Sleeper.SYSTEM_SLEEPER, timeOutInSeconds, DEFAULT_SLEEP_TIMEOUT);
    }
    然后在类里面用内部类ExpectedCondition,实现apply方法查找元素
    public static WebElement findAndWait(AppiumDriver driver, final By by, long timeout) {
    WebElement ele = new AppiumDriverWait(driver, timeout)
    .until(new ExpectedCondition() {
    public WebElement apply(AppiumDriver d) {
    return d.findElement(by);
    }
    });
    return textView;
    }
    最后在你的脚本里面用如下语句查找页面元素
    AppiumDriverWait.findAndWait(driver, By.xpath("xpath"), 60L);
    60秒内找到就返回webelement,找不到就报RuntimeException。

    不过这是比较老的方法了,据说现在selenium最新jar包是java8平台上的了,java8支持函数闭包,应该会有更简洁的方法实现此功能。没用过java8,也没用过selenium3.0纯猜测。
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-12 06:13 , Processed in 0.062047 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表