【发布时间】:2019-01-31 05:44:38
【问题描述】:
我有一个场景需要处理显示为网格的 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']>
一口气。
【问题讨论】:
-
用基于文本的实际 HTML 代替手工制作的 HTML 更新问题
-
不知道为什么通过webelement引用获取所有这些文本需要时间。或许有没有办法将所有这些 xml 作为文本获取 和至少单行中的一行 是矛盾的用例。请edit the question 将其限制为具有足够详细信息的特定问题,以确定适当的答案。避免一次问多个不同的问题。请参阅How to Ask 页面以获得澄清此问题的帮助。你想做什么?
-
您是否尝试过获取顶级表格标签,然后使用
.text,看看您得到了什么?这应该可以让您按照您的意愿解析整个表格的文本。不过,我认为这不是一个好主意。 -
感谢所有 cmets - @DebanjanB - 我已经编辑了这个问题。希望您理解,但由于公司隐私原因,我无法提供确切的 html。我相信一次获取 xml/dom 将需要一次操作 O(1),而一个接一个地获取多个元素将需要随着元素数量的增加而进行的操作 O(n)。如果您有其他感觉,请告诉我。
-
@JeffC - 获取文本将不起作用,因为文本可能是多行的,并且更难以解析。 Innerhtml 会更容易解析。
标签: python python-3.x selenium selenium-webdriver