正在Web驱动程序中查找动态元素

Finding dynamic elements in webdriver

本文关键字:动态 元素 查找 Web 驱动程序 正在      更新时间:2023-09-26

我使用的是带有eclipse/TestNG的java网络驱动程序。

我在网页上有一个名为"测试142"的元素。142总是在变化,这是一个记录的计数。我使用了partialLinkText技术,但它失败了,因为页面上还有另一个元素的名称是"Tests",所以每次我执行测试脚本时,光标都会点击第二个元素。请帮助我构建"测试142"的动态元素定位器,这可以解决我的问题。

HTML代码:

html>
<head>
<body>
<div id="errorMsgContainer" class="ui-widget-header"> </div>
 <script type="text/javascript">
 <style>
  <div id="help" class="help">
  <div class="wrapper">
  <div id="header">
  <div id="mainMenu">
  <br clear="all">
  <div class="siteWrapper">
  <div id="content">
  <div id="main" class="main">
  <h2>
  <ul id="" class="tabPane" style="padding-left:5px;">
  <div class="tabPage">
  <ul id="" class="tabPaneVertical" style="padding-left:5px;">
  <li id="items_" class="">
  <li id="items_" class="">
  <li id="items_" class="active">
  <div>
  <a href="/test2/1/p/a/projects/project/tests/project_id/1">
   Tests
  <span>142</span>
  </a>
  <div class="children">
  </div>
   </li>
  <li id="items_" class="">
  <li id="items_" class="">
  <li id="items_" class="">
  <li id="items_" class="">
  <li id="items_" class="">
  <li id="items_" class="last">
  </ul>
  <div class="tabPageVertical">
  <script type="text/javascript">
   </div>
  </div>
  <div id="footer"></div>
  <div class="clear"></div>
  </div>
  <div class="footer">Powered by 2 © 2006-2013 v1.4.9.3</div>
  </div>
  <script>
  </div>
  <div id="ui-datepicker-div" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>
  </body>
  </html>

谢谢。

首先,正如我在评论中提到的,HTML现在格式严重错误,因此任何直接的答案在修复后都可能是不正确的。相反,当我们寻找一个元素时,我会讨论实际发生了什么,因为我认为那里有一些混乱。

为了澄清一些术语:在示例HTML中没有名为"Tests142"的元素。有一个元素包含文本"Tests 142",但这完全不同。我们真正想要的是围绕该文本的<a>标记(当我们检索文本时,<span>将被忽略(,或者如果我们只对实际数字感兴趣,则需要<span>标记。。

例如,XPath //li[@id='items_']/div/a指向一个li,其中id='items_'包含一个包含超链接的div,在这种情况下(稍微清理了HTML之后(是包含"测试142"的元素。这并不取决于链接中的实际文本;如果它说"Tests 804"或"jabberwocky",XPath仍然会匹配它。如果你只对数字感兴趣,你可以使用XPath //li[@id='items_']/div/a/span只查看<span>标记。

大幅减少的测试HTML:

<html>
<body>
<div class="tabPage">
    <ul id="" class="tabPaneVertical" style="padding-left:5px;">
        <li id="items_" class="active">
            <div>
                <a href="/test2/1/p/a/projects/project/tests/project_id/1">
                    Tests <span>142</span>
                </a>
            </div>
        </li>
    </ul>
</div>
</body>
</html>