mob*_*cdi 7 python-3.x selenium-webdriver
我有一个HTML表格,每行输出一些数据,每行包含一个文本字段.我有一个单独的数据框,其中包含我需要输入到相关行的值,但我无法弄清楚如何获取正确的文本输入元素,因为名称不是唯一的.
我可以得到包含的元素,123456/1所以我可以找到包含我想要的PartA的行,但我无法弄清楚如何获取文本输入字段id ="VALUE.ENTER.SYSTEM.1-XY然后对应于该行..XY是一个数值,它根据数据行的数量而变化,我不能假设XY的特定值对应于我想要查找的值.
我不知道该行的完整@value,并且页面上列出的值一次限制为50只因为我没有找到它一次并不意味着它不会出现在后面的页面上.我需要找到表中的第一行,从中提取一个值然后如果我在另一个数据帧中有匹配,如果我这样做,我想在行的末尾向文本框添加一个值,然后继续下一行并重复extract,compare,submit步骤,直至用完了行
任何可靠的方法来定位python中的文本输入字段
title ="EnterValueHere"
我的守则
for row in rows:
RowData = row.find_elements_by_tag_name("input")
for cell in RowData:
#Get the ID in question
if "/" in cell.get_attribute("value"):
TextToSplit =cell.get_attribute("value")
PartA,PartB= str(TextToSplit).split("/")
print(PartA)
Run Code Online (Sandbox Code Playgroud)
样本表
<tr>
<td class="tablesaw-cell-persist">
<input type="hidden" name="UNIQUE_ID.SYSTEM.01" value="12">
<input type="hidden" name="HEADER_ID.SYSTEM.01" value="">
123456/1<input type="hidden" name="CODE.SYSTEM.01" value="123456/1">
<span id="ANCHOR.SYSTEM.01"></span>
</td>
<td class="tablesaw-cell-persist">
BLOGGS JOE<input type="hidden" name="NAME.SYSTEM.01" value="JOE BLOGGS">
</td>
<td class="tablesaw-cell-persist">
1<input type="hidden" name="ATTEMPT.SYSTEM.01" value="1">
</td>
<td>
<input type="hidden" name="PRODUCTID.DUM_ASSESSMENT.MENSYS.1-12" value="XY1234+1">
<input type="hidden" name="SUS_CODE.DUM_ASSESSMENT.MENSYS.1-12" value="">
<div class="sv-input-group-table"><div class="sv-input-group"><span class="sv-input-group-addon"><span class="mme-input-group">
N<input type="hidden" name="RTS_CODE.DUM_ASSESSMENT.MENSYS.1-12" value="N">
</span></span><input type="text" class="sv-form-control sv-form-control-xs" name="VALUE.ENTER.SYSTEM.1-12" id="VALUE.ENTER.SYSTEM.1-12" title="EnterValueHere" value=""></div></div>
<span class="fbk-input-group fbk-select"></span>
</td>
</tr>
<tr>
<td class="tablesaw-cell-persist">
<input type="hidden" name="UNIQUE_ID.SYSTEM.02" value="12">
<input type="hidden" name="HEADER_ID.SYSTEM.02" value="">
123456/1<input type="hidden" name="CODE.SYSTEM.02" value="234456/1">
<span id="ANCHOR.SYSTEM.02"></span>
</td>
<td class="tablesaw-cell-persist">
BLOGGS JOE<input type="hidden" name="NAME.SYSTEM.02" value="J BLOGGS">
</td>
<td class="tablesaw-cell-persist">
1<input type="hidden" name="ATTEMPT.SYSTEM.02" value="1">
</td>
<td>
<input type="hidden" name="PRODUCTID.DUM_ASSESSMENT.MENSYS.1-02" value="XY1234+2">
<input type="hidden" name="SUS_CODE.DUM_ASSESSMENT.MENSYS.1-02" value="">
<div class="sv-input-group-table"><div class="sv-input-group"><span class="sv-input-group-addon"><span class="mme-input-group">
N<input type="hidden" name="RTS_CODE.DUM_ASSESSMENT.MENSYS.1-02" value="N">
</span></span><input type="text" class="sv-form-control sv-form-control-xs" name="VALUE.ENTER.SYSTEM.1-02" id="VALUE.ENTER.SYSTEM.1-02" title="EnterValueHere" value=""></div></div>
<span class="fbk-input-group fbk-select"></span>
</td>
</tr>
<tr>
<td class="tablesaw-cell-persist">
<input type="hidden" name="UNIQUE_ID.SYSTEM.03" value="12">
<input type="hidden" name="HEADER_ID.SYSTEM.03" value="">
123456/1<input type="hidden" name="CODE.SYSTEM.03" value="56789/1">
<span id="ANCHOR.SYSTEM.02"></span>
</td>
<td class="tablesaw-cell-persist">
BLOGGS JOE<input type="hidden" name="NAME.SYSTEM.03" value="JM BLOGGS">
</td>
<td class="tablesaw-cell-persist">
1<input type="hidden" name="ATTEMPT.SYSTEM.03" value="1">
</td>
<td>
<input type="hidden" name="PRODUCTID.DUM_ASSESSMENT.MENSYS.1-03" value="XY1234+2">
<input type="hidden" name="SUS_CODE.DUM_ASSESSMENT.MENSYS.1-03" value="">
<div class="sv-input-group-table"><div class="sv-input-group"><span class="sv-input-group-addon"><span class="mme-input-group">
N<input type="hidden" name="RTS_CODE.DUM_ASSESSMENT.MENSYS.1-02" value="N">
</span></span><input type="text" class="sv-form-control sv-form-control-xs" name="VALUE.ENTER.SYSTEM.1-03" id="VALUE.ENTER.SYSTEM.1-03" title="EnterValueHere" value=""></div></div>
<span class="fbk-input-group fbk-select"></span>
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
因此,首先您需要获取代码的 TR 123456/1。xpath 是
//tr[td//input[@name="CODE.SYSTEM.XY"][@value=123456/1]
Run Code Online (Sandbox Code Playgroud)
所以上面是获取tr包含您的input元素的元素。现在您希望输入位于此 tr 内,这可以通过将 XPath 扩展为
//tr[td//input[@name="CODE.SYSTEM.XY"][@value=123456/1]/td//input[@title='EnterValueHere']
Run Code Online (Sandbox Code Playgroud)
更新 1:2018 年 5 月 30 日
你应该使用
//tr[td//input[starts-with(@name, 'CODE.SYSTEM.')][starts-with(@value, '123456/')]/td//input[@title='EnterValueHere']
Run Code Online (Sandbox Code Playgroud)
第一部分表示在文档中的任何位置查找 tr,然后 [] 条件表示在任何位置都有一个元素 td 和子输入字段 hwre,其属性名称以 CODE... 开头,值以 12345/ 开头,一旦找到 tr 就找到另一个td 里面有一个标题为 Entervaluehere 的输入
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |