【问题标题】:Extracting A Value From An Inline JS Script Tag With RobotFramework使用 RobotFramework 从内联 JS 脚本标签中提取值
【发布时间】: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


【解决方案1】:

您应该能够通过获取innerHTML 属性的值来获取脚本标记的内容。 reference

我不熟悉机器人框架,但根据您提供的信息,我怀疑使用get element attributeinnerHTML 会将脚本标签的内容作为字符串返回,然后您可以使用正则表达式进行匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 2017-03-09
    • 1970-01-01
    • 2015-02-02
    • 2020-06-18
    • 2023-03-03
    相关资源
    最近更新 更多