使用Xpath识别Tosca中的对象

时间:2018-04-18 12:59:35

标签: xpath tosca

我最近在TOSCA上刷了我的技能,2年前我正在研究它并切换到Selenium,我注意到新的TOSCA允许使用Xpath识别,我现在对它非常熟悉,但是,我不能使它在TOSCA中工作,我确信对象识别有效,因为我在谷歌浏览器开发人员工具中测试我的xpath。

简单到(// * [text()='忘记密码?'])[1]似乎没有用。我可以错过什么吗?

这是我用作此示例的参考的网页: https://www.freecrm.com/index.html

6 个答案:

答案 0 :(得分:0)

我所知道的是,在Tosca API测试中使用XML消息时,您可以使用XPath识别元素。您的用例似乎是UI测试,但我不确定。

答案 1 :(得分:0)

您是否尝试使用XScan扫描页面?通常,Tosca会自动为您计算一个可以立即使用的XPath表达式。

请参阅manual for details

如果仍然无效,请尝试更具体一点?什么不起作用?错误信息?出乎意料的行为? ...

答案 2 :(得分:0)

Tosca提供了一组用于查找任何类型元素的属性。您可以直接选择要使元素唯一的任意数量的属性以及该元素的索引。只要确保你没有在该元素的'id'或'class-name'中使用任何动态值,索引范围也不会像20中的20那样大;它可能是10分中的5分,如果您将来需要更新它将会有所帮助。 还可以获得容易找到的父元素的帮助,然后找到你想要的元素。

答案 3 :(得分:0)

TOSCA提供了多种元素定位方法,就像硒加上元素一样,此外它还将提供其他属性。在过渡属性下,您将找到x路径,并且它将是绝对x路径,因为您知道硒后就知道了绝对值和绝对值之间的区别。相对x路径。我建议你去。 1.通过 ID或名称识别 2.通过 anchor 进行标识 如果您的相对x路径不起作用

答案 4 :(得分:0)

XPath当然可以用于标识Tosca中HTML Web UI的元素。

自最初发布问题以来,“忘记密码?” https://www.freecrm.com/index.html上的链接似乎已更改,因此其文本现在为“忘记密码?”并且实际上位于https://ui.freecrm.com/。 为了说明这一变化,此答案使用了“(// * [text()='忘记密码了?'])[1]”,而不是原始文章中提供的表达式。

通过修改文本,该表达式可以在用双引号引起来后识别XScan中的元素:

"(//*[text()='Forgot your password?'])[1]"

在Tosca中使用XPath时要记住一些事情:

  1. 似乎XPath表达式需要用双引号(“)引起来,以便XScan知道何时开始评估XPath而不是使用其正常规则。仔细观察XScan启动时预先生成的表达式,我们会发现它用双引号引起来:
"id('ui')/div[1]/div[1]/div[1]/a[1]"
  1. 有效的XPath表达式不一定能保证唯一性,因此,注意XScan底部的任何反馈消息将很有帮助。 “未找到所选元素”和“所选元素不是唯一的”之间存在显着差异。前者仅表示XScan找不到匹配项,后者则表示XScan成功匹配,但无法唯一标识元素。

  2. 我的经验是,它有助于明确标识元素以减少歧义的可能性。如果想法是定位锚元素以便测试单击链接,则减小 any 元素的范围,即“(// * [text()='忘记密码?']] [1]”仅匹配具有该文本“ // a [text()='忘记密码?']”的 anchor 元素。

  3. 通常,Tricentis(或至少与我交谈过的培训师)建议使用XPath以外的方法来确定目标(如果有)。就是说,根据我的经验,我对XPath的运气要比对“通过锚识别”好。

    • XPath表达式在XModuleAttribute属性中可见并且可以编辑,而无需重新扫描。就个人而言,我发现使用它比使用Anchor识别时生成的RelativeId属性的XML值更容易。
    • 使用Anchor,我遇到了以下问题:在切换到另一种浏览器(尤其是从IE到Chrome)时,再也找不到在一个浏览器中扫描的XModuleAttributes了。使用XPath,我没有这些问题。
  4. 虽然XPath可以很好地识别一个元素的属性和另一个元素的属性,因为它可以识别元素之间的关系(这在Angular应用程序中非常常见),但是通常可以通过调整引擎层来实现使用TBox API(即构建自定义控件)。这需要开发人员先进行一些初步工作,但除了可以减少自动化专家必须依赖XPath的需求之外,还可以大大改善测试控制这些控件的方式。

答案 5 :(得分:-1)

尝试在右侧底部加载所有属性。但是它显示给我,而无需单击它。参见here