hcy3576538 发表于 2017-4-25 14:51:27

求助,如何解决自动化脚本的稳定性问题?

我用的是selenium+java搭的框架,在脚本运行时总会时不时出错,主要是找不到元素、元素不可点击和执行错误的请求,研究了一下一般是由于网络原因或者是服务器响应慢导致的,具体表现为一步操作执行完之后,在页面还没有完全加载好时脚本就开始执行下一步 的操作了。在定位元素时我已经加了两种等待了,还是会经常出这种问题,希望大神给点意见,我的定位元素的封装代码如下(定位方式与定位路径已经用键值方式封装起来了):
public WebElement Find_Element(final String key){
    final String type=yamlUtils.getKeyMap().get(key).get("type");
    final String value=yamlUtils.getKeyMap().get(key).get("value");
    try {
      WebElement element=(new WebDriverWait(dr,15)).until(
                new ExpectedCondition<WebElement>(){
                  public WebElement apply(WebDriver d){
                        return dr.findElement(yamlUtils.GetBy(type,value));
                  }
                }
      );
      WebDriverWait wait =new WebDriverWait(dr,10);
       wait.until(ExpectedConditions.elementToBeClickable(dr.findElement(yamlUtils.GetBy(type,value))));
      report.log("通过定位方式By."+type+"定位到元素"+value);
      return element;
    }
    catch (Exception e){
      e.printStackTrace();
      report.error("无法通过定位方式By."+type+"定位到元素"+value);
      ScreenPhotoShot();
      return null;
    }
}

jingzizx 发表于 2017-4-25 16:01:49

一般是等待页面元素加载后在执行脚本吧,看大家的经验是对页面是否加载完全做校验之后再执行后面的脚本

hcy3576538 发表于 2017-4-25 16:32:39

我封装完之后的效果就是每次定位元素前都会进行等待,要实现你那种说法的话,页面加载的校验要放在哪里?具体的代码是什么可以麻烦告诉我一下么?

hcy3576538 发表于 2017-4-25 16:33:42

jingzizx 发表于 2017-4-25 16:01
一般是等待页面元素加载后在执行脚本吧,看大家的经验是对页面是否加载完全做校验之后再执行后面的脚本

我封装完之后的效果就是每次定位元素前都会进行等待,要实现你那种说法的话,页面加载的校验要放在哪里?具体的代码是什么可以麻烦告诉我一下么?

Q661823 发表于 2017-5-3 10:54:55

默认时间太短了吧

hcy3576538 发表于 2017-5-17 15:34:20

Q661823 发表于 2017-5-3 10:54
默认时间太短了吧

15秒还短么:L
页: [1]
查看完整版本: 求助,如何解决自动化脚本的稳定性问题?