Selenium 使用RobotFramework从内联JS脚本标记中提取值

Selenium 使用RobotFramework从内联JS脚本标记中提取值,selenium,xpath,robotframework,Selenium,Xpath,Robotframework,有一些内联JS在我们网站的顶部运行。它包含一些从网页中提取的名称-值对。我正在用robot框架编写测试,以断言这些存在并具有价值。JS的一个小摘录如下所示: siteId':'1133','offerId':'1228','productId':'549',' 我能够使用xpath定位器断言名称的存在,如下所示 page should contain element xpath=/html/head/script[contains(text(),"siteId")]

有一些内联JS在我们网站的顶部运行。它包含一些从网页中提取的名称-值对。我正在用robot框架编写测试,以断言这些存在并具有价值。JS的一个小摘录如下所示:

siteId':'1133','offerId':'1228','productId':'549','
我能够使用xpath定位器断言名称的存在,如下所示

page should contain 
element  xpath=/html/head/script[contains(text(),"siteId")] 
通过robot框架和Selenium库,我断言使用
页面存在的名称应该包含element
关键字,这非常有效

现在我需要提取这个值,所以上面的例子中的'1133'

我一直在使用
get element属性
关键字,在DOM中的其他位置获取值时,该关键字工作得很好。但似乎对这个案子不起作用。我一直得到
none
作为值

我的xpath可能需要以不同的方式编写,以便能够从中提取值,但我不确定


非常感谢所有帮助或想法。

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


我不熟悉robot框架,但根据您提供的信息,我怀疑使用
get-element-attribute
innerHTML
将以字符串形式返回脚本标记的内容,你可以用正则表达式匹配它。

你能分享完整的
脚本
内容而不仅仅是一个小摘录吗?@JaSON我真的不能,因为它可能有200行长。但除了开始时的函数。大部分看起来像我已经贴过的东西。它看起来几乎是一个大的JSON文件,被烧掉并充满了来自网站的数据。我只是断言它们中的一些存在名称和值,以确保脚本启动并拉入一些值。所以我只需要知道名称存在,并且它有一个值。问题是拉取的值是
none
。所以我认为我的xpath可能不够好。从DOM/xpath的角度来看,
script
元素内容只是纯文本。所以,你需要文本操作。因为Selenium使用浏览器内置的XPath引擎,所以只剩下XPath 1.0。-我认为最好将该文本视为javascript,甚至是JSON,并使用适当的Python模块,如中所示