zoukankan      html  css  js  c++  java
  • 转-web自动化测试,定位不到元素的原因及解决方案

    1.动态id定位不到元素

    分析原因:每次打开页面,ID都会变化。用ID去找元素,每次刷新页面ID都会发生变化。

    解决方案:推荐使用xpath的相对路径方法或者cssSelector查找到该元素。
          

    2.iframe原因定位不到元素

    分析原因:你要找的元素在某个框架(frame)里面

    解决方案:跳转到该框架里,再查找元素。

         driver.switchTo().frame("login_frame");

         driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[frameborder='0']")));

         driver.switchTo().frame(driver.findElement(By.tagName("iframe")); 

    3.要返回到某frame外找元素

    分析原因:当你进入某个框架,找到某元素。接下来又想找一个框架外的元素的时候,需要跳出该框架再找元素。

    解决方案:执行下面这句代码,pareneFrame是父类,从当前框架跳转到父类的框架里。

          driver.switchTo().parentFrame(); 

    4.不在同一个frame里边查找元素

    分析原因:页面左边一栏属于left_frame,右侧属于right_frame的情况,此时如果当前处在left_frame,就无法通过id定位到right_frame的元素

    解决方案:通过以下语句切换到默认的content:

          driver.switchTo().defaultContent();

    5. xpath描述错误
    分析原因:描述路径的时候没有按照xpath的规则来写 造成找不到元素的情况出现

    解决方案:修改路径写法,或者用其他方式,个人最推荐css。

        

    6.页面元素未加载完
    分析原因:在找元素前,页面还没加载好,所以那些元素都不存在。

    解决方案:等待时间。有三种方式(强制等待,隐式等待,智能等待)

         Thread.sleep(5000); //强制等待5000毫秒

    7.元素隐藏起来了

    分析原因:窗口在不是最大化的情况下,前端页面元素只会显示局部,所以找不到啊。

    解决方案:在找元素前,执行一句,浏览器最大化窗口,这样隐藏的元素就会全部出现了。最好写在beforetest里。

            driver.manage().window().maximize();

    8.firefox安全性强,不允许跨域调用出现报错

    分析原因:它的错误描述为uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMNSHTMLDocument.execCommand]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location:

    解决方案:Firefox 要取消XMLHttpRequest的跨域限制。

         第一是从 about:config 里设置

         signed.applets.codebase_principal_support = true; (地址栏输入about:config 即可进行firefox设置)
         第二就是在open的代码函数前加入类似如下的代码:

         try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); } catch (e) { alert("Permission UniversalBrowserRead denied."); }

  • 相关阅读:
    uvalive 3644 X-Plosives
    uva 11997 K Smallest Sums
    Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) D. Sorting the Coins
    Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) C. Classroom Watch
    Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) B. Divisiblity of Differences
    Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) A. Trip For Meal
    1004. 成绩排名 (20)
    1003. 我要通过!(20)
    1002. 写出这个数 (20)
    1001. 害死人不偿命的(3n+1)猜想 (15)
  • 原文地址:https://www.cnblogs.com/shen-qiang/p/9777788.html
Copyright © 2011-2022 走看看