我有一种情况,要求处理显示为网格的UI对象,但行和列是xml / dom层次结构中包含的单独的Web元素,该层次结构由多个xpath组成,可以使用通用模式进行解析。 所有这些元素都包含与列类型相对应的文本。 通过webelement引用所有这些文本需要一个时间。 有没有一种方法可以将所有这些xml文本(或单笔至少一行)获取为文本,以通过内联解析整个xml来节省提取时间。
例如,考虑底部提到的xml。如何获得<div[@class='table']>
下的所有xml层次结构作为要解析的文本。
这是示例示例:
<div[@class='table']>
<div[@class='rows']>
<div[@class='row']>
<div[@class='col']>
<div[@class='element']>some_text1</div[@class='element']>
<div[@class='element']>some_text2</div[@class='element']>
<div[@class='element']>some_text3</div[@class='element']>
...
</div[@class='col']>
</div[@class='row']>
<div[@class='row']>
<div[@class='col']>
<div[@class='element']>some_text1</div[@class='element']>
<div[@class='element']>some_text2</div[@class='element']>
<div[@class='element']>some_text3</div[@class='element']>
...
</div[@class='col']>
</div[@class='row']>
<div[@class='row']>
...
</div[@class='row']>
<div[@class='row']>
...
</div[@class='row']>
<div[@class='row']>
...
</div[@class='row']>
</div[@class='rows']>
</div[@class='table']>
我需要获取xml / dom / div继承关系,如下所述:
<div[@class='rows']>
<div[@class='row']>
<div[@class='col']>
<div[@class='element']>some_text1</div[@class='element']>
<div[@class='element']>some_text2</div[@class='element']>
<div[@class='element']>some_text3</div[@class='element']>
...
</div[@class='col']>
</div[@class='row']>
<div[@class='row']>
<div[@class='col']>
<div[@class='element']>some_text1</div[@class='element']>
<div[@class='element']>some_text2</div[@class='element']>
<div[@class='element']>some_text3</div[@class='element']>
...
</div[@class='col']>
</div[@class='row']>
<div[@class='row']>
...
</div[@class='row']>
<div[@class='row']>
...
</div[@class='row']>
<div[@class='row']>
...
</div[@class='row']>
</div[@class='rows']>
一口气
答案 0 :(得分:5)
element = driver.find_element_by_xpath("//div[@class='table']").get_attribute('outerHTML')
属性outerHTML
will return you the element itself and all its child nodes-出现在DOM中。
我建议不要针对类似的innerHTML
,好像目标元素有一个文本子节点,您会收到它,但是结果将不是正确的xml。
答案 1 :(得分:0)
请尝试以下操作:
WebElement element = driver.find_element_by_xpath("//div[@class='table']");
String elementText = element.text;
在字符串“ elementText”中,您将获取表层次结构中存在的全部文本。