我有以下XML结构:
<array-list>
<tests>
<test myId="11">Some data</test>
<test myId="22">Some data 2</test>
</tests>
</array-list>
如何在列表中存储第一个元素的"myId"
属性?
我已尝试使用以下位置参数的storeAttribute
命令,但没有运气:
1. //array-list/tests/test[1]@myId
2. xpath=//array-list/tests/test[1]@myId
3. */test[1]@myId
4. //array-list/tests/test@myId
5. //array-list/tests/test[1]/@myId
6. //array-list/tests/test/@myId
我相信还有其他一些尝试,但没有一个是有效的。请不要说“正确的XML”。 XML没有任何其他属性。这是从外部服务检索的,我无法修改。所以唯一的问题是如何从列表中的第一个测试标记中获取**myId**
属性
答案 0 :(得分:1)
如果我说更正xml你会不高兴但你必须将myID更改为myid(一切都很小)(我仍然在寻找原因?)。
我尝试使用给定的xml
<array-list>
<tests>
<test myid="11">Some data</test>
<test myid="22">Some data 2</test>
</tests>
</array-list>
我尝试的代码是
<tr>
<td>storeAttribute</td>
<td>//test[1]/@myid</td>
<td>myVar</td>
</tr>
<tr>
<td>echo</td>
<td>${myVar}</td>
<td></td>
</tr>
并且运作良好。
答案 1 :(得分:0)
因此,例如使用css选择器假设以下更改:
<array-list>
<tests>
<test id="11">Some data</test>
<test id="22">Some data 2<img src="some attribute"></test>
</tests>
</array-list>
我们可以这样做:
和html:
<tr>
<td>storeText</td>
<td>css=test#11 </td>
<td>var</td>
</tr>
<tr>
<td>echo</td>
<td>${var}</td>
<td></td>
</tr>
<tr>
<td>storeAttribute</td>
<td>css=test#22 > img@src</td>
<td>img</td>
</tr>
<tr>
<td>echo</td>
<td>${img}</td>
<td></td>
</tr>
和webdriver python版本:
var = driver.find_element_by_css_selector("test#11").text
print(var)
img = driver.find_element_by_css_selector("test#22 > img").get_attribute("src")
print(img)