我最近在TOSCA上刷了我的技能,2年前我正在研究它并切换到Selenium,我注意到新的TOSCA允许使用Xpath识别,我现在对它非常熟悉,但是,我不能使它在TOSCA中工作,我确信对象识别有效,因为我在谷歌浏览器开发人员工具中测试我的xpath。
简单到(// * [text()='忘记密码?'])[1]似乎没有用。我可以错过什么吗?
这是我用作此示例的参考的网页: https://www.freecrm.com/index.html
答案 0 :(得分:0)
我所知道的是,在Tosca API测试中使用XML消息时,您可以使用XPath识别元素。您的用例似乎是UI测试,但我不确定。
答案 1 :(得分:0)
您是否尝试使用XScan扫描页面?通常,Tosca会自动为您计算一个可以立即使用的XPath表达式。
如果仍然无效,请尝试更具体一点?什么不起作用?错误信息?出乎意料的行为? ...
答案 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时要记住一些事情:
"id('ui')/div[1]/div[1]/div[1]/a[1]"
有效的XPath表达式不一定能保证唯一性,因此,注意XScan底部的任何反馈消息将很有帮助。 “未找到所选元素”和“所选元素不是唯一的”之间存在显着差异。前者仅表示XScan找不到匹配项,后者则表示XScan成功匹配,但无法唯一标识元素。
我的经验是,它有助于明确标识元素以减少歧义的可能性。如果想法是定位锚元素以便测试单击链接,则减小 any 元素的范围,即“(// * [text()='忘记密码?']] [1]”仅匹配具有该文本“ // a [text()='忘记密码?']”的 anchor 元素。
通常,Tricentis(或至少与我交谈过的培训师)建议使用XPath以外的方法来确定目标(如果有)。就是说,根据我的经验,我对XPath的运气要比对“通过锚识别”好。
虽然XPath可以很好地识别一个元素的属性和另一个元素的属性,因为它可以识别元素之间的关系(这在Angular应用程序中非常常见),但是通常可以通过调整引擎层来实现使用TBox API(即构建自定义控件)。这需要开发人员先进行一些初步工作,但除了可以减少自动化专家必须依赖XPath的需求之外,还可以大大改善测试控制这些控件的方式。
答案 5 :(得分:-1)
尝试在右侧底部加载所有属性。但是它显示给我,而无需单击它。参见here