Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Xpath识别Tosca中的对象_Xpath_Tosca - Fatal编程技术网

使用Xpath识别Tosca中的对象

使用Xpath识别Tosca中的对象,xpath,tosca,Xpath,Tosca,我最近在复习我在TOSCA方面的技能,2年前我在做这项工作,后来改用了Selenium,我注意到新的TOSCA允许使用Xpath进行识别,现在我对它非常熟悉,我不能让它在TOSCA中工作,而且我确信对象标识可以工作,因为我正在google chrome开发工具中测试我的xpath 像(//*[text()=“忘记密码?”)[1]这样简单的东西似乎不起作用。我会错过什么吗 这是我在此示例中用作参考的网页: 我知道,在Tosca API测试中处理XML消息时,可以使用XPath识别元素。您的用例似乎

我最近在复习我在TOSCA方面的技能,2年前我在做这项工作,后来改用了Selenium,我注意到新的TOSCA允许使用Xpath进行识别,现在我对它非常熟悉,我不能让它在TOSCA中工作,而且我确信对象标识可以工作,因为我正在google chrome开发工具中测试我的xpath

像(//*[text()=“忘记密码?”)[1]这样简单的东西似乎不起作用。我会错过什么吗

这是我在此示例中用作参考的网页:

我知道,在Tosca API测试中处理XML消息时,可以使用XPath识别元素。您的用例似乎是UI测试,但我不确定。您是否尝试使用XScan扫描页面?通常,Tosca会自动为您计算一个可以立即使用的XPath表达式

请看地图


如果它仍然不起作用,请尽量具体一些?什么不起作用?错误消息?意外的行为

Tosca提供了一组用于定位任何类型元素的属性。您可以直接选择任意数量的属性,使元素与该元素的索引一起唯一。只需确保您没有在该元素的“id”或“classname”中使用任何动态值,而且索引范围也不会像100个中的20个那样大;它可能是10个中的5个,如果您将来需要更新它,这将非常有用。
还可以利用父元素,这些元素将很容易地唯一定位,然后定位您期望的元素。

TOSCA提供了各种方法来定位元素,就像selenium plus一样,此外,它还将提供其他属性。在“转换属性”下,您将找到x路径,它将是绝对x路径,因为您知道selenium plus了解绝对和相对x路径之间的差异。我建议你和我一起去。 1.通过ID或名称识别 2.通过锚定进行识别
如果相对x路径不工作

请尝试加载右侧底部的所有属性。但是我没有点击它就看到了。请参见

XPath当然可以用于识别Tosca中HTML web UI的元素

由于问题最初发布,位于的“忘记密码”链接似乎已更改,因此其文本现在为“忘记密码”,实际上位于。 为了解释这一变化,此答案使用“(//*[text()=‘忘记密码?’)[1]”而不是原始帖子中提供的表达式

通过文本修改,表达式将元素用双引号括起来后,用于标识XScan中的元素:

"(//*[text()='Forgot your password?'])[1]"
在Tosca中使用XPath时要记住以下几点:

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

  • 我的经验是,它有助于明确识别元素,以减少歧义的可能性。如果想法是以锚元素为目标,以便测试单击链接,则减少任何元素的作用域,即“(/*[text()=“忘记密码?”)[1]”,以便仅将锚元素与该文本匹配“//a[text()=“忘记密码?”]”

  • 一般来说,Tricentis(或者至少是我与之交谈过的培训师)建议使用XPath以外的方法来识别可用的目标。也就是说,根据我的经验,使用XPath比使用“锚定标识”更幸运

    • XPath表达式在XModuleAttribute属性中可见且可编辑,无需重新扫描。就我个人而言,我发现使用RelativeId属性的XML值比使用按锚点标识时生成的XML值更容易
    • 使用Anchor时,我遇到了这样的问题:当切换到另一个浏览器(特别是从IE切换到Chrome)时,在一个浏览器中扫描的XModuleAttributes再也找不到了。对于XPath,我没有遇到这些问题
  • 虽然XPath可以很好地识别一个元素的属性和另一个元素的属性,因为它可以识别它们之间的关系(这在角度应用程序中的控件中非常常见),但通常可以通过使用调整引擎层(即构建自定义控件)来实现这一点。这需要开发人员资源预先进行一些初始工作,但除了减少自动化专家必须依赖XPath的需要外,还可以显著改进测试如何引导这些控件


  • 也可以使用XPath进行UI测试。