由于每次刷新后随机生成每个 ID,我不得不使用其他标识符。我基本上希望机器人将文本输入到我指定的标识符旁边的字段中。
https://vgy.me/3YBIgl.png
我希望将文本输入到 user: 字段并使用“user:”作为要使用的定位器。
它适用于 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}
但老实说,我不知道。有什么地方可以阅读吗?
我对机器人框架非常陌生。对不起,菜鸟。
最佳答案
查看示例,输入的 name 属性看起来不是随机生成的。如果确实如此,您可以按名称使用最简单的 Selenium 定位器策略,例如:
Input Text name=j_username ${USERNAME}
如果不是这种情况,可以通过 xpath 来完成:
//tr[//span[text()="User:"]/td//input
读取(从右到左清晰,虽然它被评估为 LTR):返回输入,它位于 td(单元格)内,它本身是 tr(表格行)的直接子元素,具有跨度该文本(此处完全匹配)。
因此,定位器将找到包含“User:”的单元格的行,并返回其中的输入。
关于robotframework - Robot Framework - Selenium2Library - 根据之前的文本将文本输入到字段中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40681641/