Selenium 测试重复文本
Selenium 是否可以检查某个文本是否在页面上出现多次(次数并不重要,只要出现多次即可)?
我知道我可以使用“但是”来测试文本,
selenium.IsTextPresent(text)
但是一旦找到文本,它就会立即返回 true。有没有办法查看文本是否在页面上多次存在?
Is it possible in Selenium to check if a certain text appears more than once on a page (it doesn't matter how many times, just if it is more than once)?
I know that I can test for the text with
selenium.IsTextPresent(text)
But of course that returns true as soon as it finds the text once. Is there a way to see if text exists multiple times on a page?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以对 html 源进行操作:
然后简单检查测试的索引和最后一个索引(如 nabuchodonossor 在他的评论中建议的那样):
您还可以在检查索引之前删除所有 html 标签,仅在您想忽略注释时才保留可见文本、alt 属性、标题属性等。
You can operate on html source:
Then simple check for the index of the test and last index (as nabuchodonossor suggested in his comment):
You can also remove all html tags before checking indexes and leave the visible text only if you want to ignore comments, alt attributes, title attributes etc.
另一种方法是 sel.getElementCount(xpath) 或使用 sel.getEval() 运行 JS 脚本。与 sel.getHtmlSource() 相比,这两种方法的优点是您无需从 selenium 服务器带回整个页面 html。这项工作是在服务器端完成的,您可以节省带宽(可能还有速度)。
Another way to go is
sel.getElementCount(xpath)
or running a JS script usingsel.getEval()
. The advantage of these two methods oversel.getHtmlSource()
is that you don't bring back the whole page html from the selenium server. The work is done on the server side and you save the bandwidth (and probably speed).