我正在使用webdriver / node / protractor开发一些自动化测试。 我正在使用以下HTML:HTML
我不能为我的生活弄清楚如何A)只识别休息后的价值(税前)或定义我的数据比较xml来说明休息时间。这是我的xpath: // TD /跨度[含有(文本(), 'selectedBenefit')] /../../ TD [8]
我可以通过几种不同的方式(node(),text()等)导航到特定文本,但是当我运行测试时,我收到一条错误消息,说我需要返回一个元素,不是文字。
错误> 失败:无效的选择器:xpath表达式的结果“// td / span [包含(text(),'远程医疗 - 测序')] /../../ td [8] / node()[3]”是:[对象文本]。它应该是一个元素。
**编辑:这个问题已被标记为重复,我认为不是,所以我将详细解释一下。我正在使用的测试框架将json文件中定义的内容与测试的实际结果进行比较。所以,在上面的例子中,我期望测试返回$ 416.67 Pre-Tax的值,这就是我在json文件中定义的预期结果。问题是,因为包含此文本的td元素将美元金额和税值(税前或税后)分开,通过使用td元素的定位器,测试只能看到中断前的第一个值(美元金额)。现在,如果我使用xpath更细化到我在中断后仅定义值的位置,我得到的错误是xpath是objectText,并且应该是一个元素。所以我要找的是一种方法来定义json中的break,以便预期值和实际值匹配(尝试将json中的break放入无效),或者获得测试的实际结果以返回忽略中断在td元素中。对不起,如果这个含糊不清,很难在不写小说的情况下表达。
答案 0 :(得分:0)
如果你觉得这没用,请道歉。您可以提取整行,然后使用正则表达式将内部的两个部分分开。
您也可以按类名使用提取元素(注意复数)。这将返回一个包含匹配元素的列表(我希望这应该可行,因为所有HTML元素都具有相同的类名)