我正在使用带有eclipse / TestNG的java webdriver。
我有一个名为' Tests 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>
感谢。
答案 0 :(得分:0)
首先,正如我在评论中提到的,HTML现在严重格式错误,因此任何直接答案在修复后都可能不正确。相反,当我们寻找一个元素时,我会谈谈实际发生的事情,因为我觉得那里有一些混乱。
澄清一些术语:示例HTML中没有名为“Tests 142”的元素。有一个元素包含文本“测试142”,但这是完全不同的东西。我们真正需要的是此文本周围的<a>
标记(我们检索文本时会忽略<span>
),如果我们只感兴趣,则<span>
标记会被忽略在实际数字..
例如,XPath //li[@id='items_']/div/a
指向li
,id='items_'
包含div
,其中包含超链接,在这种情况下(在清理HTML之后)有点)是包含“测试142”的元素。这不取决于链接中的实际文本;如果它说“测试804”或“jabberwocky”,XPath仍然会匹配它。如果您只对该号码感兴趣,则可以使用XPath <span>
查看//li[@id='items_']/div/a/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>