我在python中使用selenium。我遇到过这张桌子。我需要检查webelement中是否存在字符串,并返回相应的字符串以防其存在。
<table width="700px" class="tableListGrid">
<thead>
<tr class="tableInfoTrBox">
<th>Date</th>
<th>Task Code</th>
<!-- th>Phone Number</th -->
<th>Fota Job</th>
<th colspan="2" class="thLineEnd">Task Description</th>
</tr>
</thead>
<tbody>
<tr class="tableTr_r">
<td>2018-04-06 05:48:29</td>
<td>FU</td>
<!-- td></td -->
<td>
<a href="javascript:checkSchedule('57220180406-JSA69596727');">57220180406-JSA69596727</a>
</td>
<td style="text-align:left;">
updated from [A730FXXU1ARAB/A730FOJM1ARAB/A730FXXU1ARAB] to [A730FXXU2ARC9/A730FOJM2ARC1/A730FXXU2ARC9]
</td>
<td>
<table class="btnTypeE">
<tr>
<td>
<a href="#syncml" class="02320180406WSA84301933" onclick="showSyncML('IMEI352020090050529', '02320180406WSA84301933')">View</a>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
我需要搜索&#34; A730FXXU2ARC9 / A730FOJM2ARC1 / A730FXXU2ARC9&#34;在这个元素中并返回&#34; 57220180406-JSA69596727&#34;它存在于网页中不同位置的同一行中。是否可以在硒中进行?
编辑:清除代码只包含有用的数据。
答案 0 :(得分:2)
可以通过使用以下Xpath查找元素来实现:
//td[contains(., 'A730FXXU2ARC9/A730FOJM2ARC1/A730FXXU2ARC9')]/preceding-sibling::td[1]/a
Xpath可以读作
查找
td
,其中包含&#34; A730FXXU2ARC9 / A730FOJM2ARC1 / A730FXXU2ARC9&#34;。然后找到td
在找到的td
之前移至a
代码
在此之后,您可以使用selenium
获取文本driver.find_element(By.XPATH, '//td[contains(., 'A730FXXU2ARC9/A730FOJM2ARC1/A730FXXU2ARC9')]/preceding-sibling::td[1]/a').text
答案 1 :(得分:0)
查找文字,例如 A730FXXU2ARC9 / A730FOJM2ARC1 / A730FOJM2ARC9 ,并查找相关文字,例如 57220180406-JSA69596727 ,您可以编写如下函数:
def test_me(myString):
myText = driver.find_element_by_xpath("//table[@class='tableListGrid']//tbody/tr[@class='tableTr_r']//td[.='" + myString + "']//preceding::td[1]/a").get_attribute("innerHTML")
现在,您可以在main()
/ @Test
中使用所需文字调用该函数,如下所示:
test_me("A730FXXU2ARC9/A730FOJM2ARC1/A730FXXU2ARC9")