【发布时间】:2017-04-02 13:46:17
【问题描述】:
由于每次刷新后都会随机生成每个 ID,我不得不使用其他标识符。我基本上希望机器人在我指定的标识符旁边的字段中输入文本。
我希望将文本输入到用户:字段并使用“用户:”作为定位器。 它适用于 xpaths,但我宁愿使用另一种不会那么脆弱的方法。
这是用于生成表单的 HTML
<tbody id="m8DPe" class="z-rows">
<tr id="m8DPf" style="background:#FFFFFF;" class="z-row">
<td id="m8DPg-chdextr" style="background:#FFFFFF;text-align:left;" class="z-row-inner">
<div id="m8DPg-cell" class="z-row-content">
<span id="m8DPg" class="z-label">User:</span>
</div>
</td>
<td id="m8DPh-chdextr" style="background:#FFFFFF;text-align:left;" class="z-row-inner">
<div id="m8DPh-cell" class="z-row-content">
<input id="m8DPh" class="z-textbox" value="" type="text" name="j_username">
</div>
</td>
</tr>
<tr id="m8DPi" style="background:#FFFFFF;" class="z-row z-grid-odd">
<td id="m8DPj-chdextr" style="background:#FFFFFF;text-align:left;" class="z-row-inner">
<div id="m8DPj-cell" class="z-row-content">
<span id="m8DPj" class="z-label">Password:</span>
</div>
</td>
<td id="m8DPk-chdextr" style="background:#FFFFFF;text-align:left;" class="z-row-inner">
<div id="m8DPk-cell" class="z-row-content">
<input id="m8DPk" class="z-textbox" value="" type="password" name="j_password">
</div>
</td>
</tr>
我知道会是这样的:
Input Text //tr[contains(text(), 'Example') and ...] ${USERNAME}
但老实说,我不知道。有什么地方可以读到吗?
我对 Robot Framework 非常陌生。对不起,菜鸟。
【问题讨论】:
-
您是否有能力与开发人员一起稍微更改 HTML 标记?
-
不,我不知道——我们基本上是用 Java 创建它,然后使用 ZK API。他们不能直接接触 HTML
-
我在一个项目中遇到了类似的问题。我能够使用 Python 根据它们的描述 xpaths 计算文本框 xpaths。因为您的 id 看起来很相似,所以您应该能够通过剥离描述符 id 的额外部分来做到这一点。这听起来很吓人,但我发现它可以使测试自动化可读且健壮。
-
Pekka,我没有 Python 的背景,而且对这一切都非常陌生。你能指出我学习这个的方法吗?我愿意只是不知道从哪里开始
标签: robotframework selenium2library