【发布时间】:2020-12-22 14:05:50
【问题描述】:
有一些内联 JS 在我们网站的顶部运行。它包含一些从网页中提取的名称值对。我正在使用机器人框架编写测试来断言这些存在并具有价值。 JS 的一小段摘录如下所示:
siteId':'1133','offerId':'1228','productId':'549','
我可以使用 xpath 定位器断言名称的存在,如下所示
page should contain
element xpath=/html/head/script[contains(text(),"siteId")]
对于机器人框架和 Selenium 库,我使用 page should contain element 关键字断言名称存在,这非常有效。
现在我需要提取值,所以在上面的例子中是'1133'。
我一直在使用get element attribute 关键字,它在抓取DOM 中其他位置的值时效果很好。但似乎不适用于这种情况。我不断得到none 作为值。
我的 xpath 可能需要以不同的方式编写才能从中提取值,但我不确定。
非常感谢所有帮助或想法。
【问题讨论】:
-
你能分享完整的
script内容,而不仅仅是小摘录吗? -
@JaSON 我真的不能,因为它可能有 200 行长。但除了它开始时的功能。大部分看起来像我已经粘贴的内容。它看起来几乎是一个大型 JSON 文件,它被触发并填充了来自网站的数据。我只是断言其中一些名称和值存在,以确保脚本触发并提取一些值。所以我只需要知道这个名字存在并且它有一个值。问题是被拉取的值是
none。所以我认为我的 xpath 可能不够好。 -
从 DOM/XPath 的角度来看
script元素内容只是纯文本。所以,你需要文本操作。因为 Selenium 使用浏览器内置的 XPath 引擎,所以只剩下 XPath 1.0。- 我认为最好将该文本视为 javascript 或什至带有适当 Python 模块的 JSON,如 stackoverflow.com/questions/52053569/…
标签: selenium xpath robotframework