如何使用 Robot Framework 获取网页上显示的所有文本?
How to get all the texts displayed on a Web Page using Robot Framework?
我正在使用 Robotframework 来自动化测试,它使用 Selenium2 库并提供了扩展许多库(Java、Python、AngularJS 等)的机会。
这是我的问题。
有没有办法让一个页面显示所有的文字?
我可以通过元素定位器获取任何特定文本,但目前我需要编写一个函数来获取页面上显示的所有文本。
有谁知道方法吗?或者提示如何让事情继续下去?
您可以通过获取 <body>
标签的文本内容来做到这一点:
${text}= Get Text //body
Log ${text} # a very long string, with newlines as delimiters b/n the different tags
${text as list}= Split To Lines ${text}
Log ${text as list} # a list, each member is the different tag's text
另一种(不使用 SE)的方法是使用像 //body//*
这样的定位器跟踪每个元素,生成带有 Get Webelements
的网络元素。
但是当您在每个生成的网络元素上调用 Get Text
时,它将 return 它的文本,加上它所有子元素的文本 - 从而复制数据。这可以在纯 xpath/xslt 中完成(使用 text()
、.
和 normalize-space()
),但遗憾的是不能通过 webdriver/selenium(它总是期望一个节点作为参数) .
^ 偏离答案的目的是展示 2 分钟研究的结果 :),并从可能已经完成该研究的人那里获得任何反馈 Get Text
在页面的每个元素上。
我正在使用 Robotframework 来自动化测试,它使用 Selenium2 库并提供了扩展许多库(Java、Python、AngularJS 等)的机会。
这是我的问题。
有没有办法让一个页面显示所有的文字?
我可以通过元素定位器获取任何特定文本,但目前我需要编写一个函数来获取页面上显示的所有文本。
有谁知道方法吗?或者提示如何让事情继续下去?
您可以通过获取 <body>
标签的文本内容来做到这一点:
${text}= Get Text //body
Log ${text} # a very long string, with newlines as delimiters b/n the different tags
${text as list}= Split To Lines ${text}
Log ${text as list} # a list, each member is the different tag's text
另一种(不使用 SE)的方法是使用像 //body//*
这样的定位器跟踪每个元素,生成带有 Get Webelements
的网络元素。
但是当您在每个生成的网络元素上调用 Get Text
时,它将 return 它的文本,加上它所有子元素的文本 - 从而复制数据。这可以在纯 xpath/xslt 中完成(使用 text()
、.
和 normalize-space()
),但遗憾的是不能通过 webdriver/selenium(它总是期望一个节点作为参数) .
^ 偏离答案的目的是展示 2 分钟研究的结果 :),并从可能已经完成该研究的人那里获得任何反馈 Get Text
在页面的每个元素上。