首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态元素概念

动态元素概念
EN

Stack Exchange QA用户
提问于 2016-08-20 19:01:09
回答 2查看 128关注 0票数 1

在观看了Selenium的动态x路径视频之后,我想问一问:

  • Q1:“动态”实际上是什么意思?这是否意味着值在运行时发生变化,还是可以在一段时间内发生变化,而在两者之间不对应用程序进行任何更改?
  • Q2:另外,当我们选择一个动态的x路径时,我们如何提前知道哪些值将保持不变,哪些值会改变?
  • Q3:最后,用户是否可以手动更改任何值以使其惟一,这样他就不需要动态地查找元素了?
EN

回答 2

Stack Exchange QA用户

发布于 2016-08-20 22:56:33

在看了Selenium中关于动态x路径的视频之后,我想问一下“动态”到底是什么意思?

我不知道你指的是哪些视频,所以我来猜猜答案。

想象一下,有人问路从机场到你的房子。在大多数地方,你可以简单地告诉他们街道地址。因为没有其他房子有相同的街道地址,他们可以把它输入谷歌地图,并从那里得到方向。

现在想象一下你住在启始的一个场景里。你的街道地址会在某一时刻发生变化,所以你不能用它来指示方向。相反,你可能会说,“去海森堡街,然后找到右边的第五栋房子。”但我们在盗梦空间的场景,所以街道也改变了名字。

如果你不能依靠街道的名字,你可以试着说,“直接离开机场,上高速公路,走两英里,然后右转,走三个街区,然后向左拐。我是这个街区的第五栋房子。”我没有在那里使用任何名字,只是转弯抹角和距离。这是可行的,除非房子可以与另一所房子换地方,或者高速公路可以变长或变短,或者额外的街道可以出现。

所有这些都可能发生在网页中的元素中。这些变化被称为动态元素。

这是否意味着值在运行时发生变化,还是可以在一段时间内发生变化,而在两者之间不对应用程序进行任何更改?

那得看情况。自动化UI测试的一个困难部分是知道元素在哪里。当您引用一个元素时,您希望这样做的内容不会改变。元素的值--尤其是输入元素--是最有可能发生变化的元素,所以通常您会使用元素的其他内容,比如它的名称、ID或它与其他元素的关系。

另外,当我们选择一个动态的x路径时,我们如何提前知道哪些值将保持不变,哪些值将发生变化?

一般来说,你不能。你必须根据你对网站的了解来猜测。有时候你会错的,所以你必须改变XPath。其他时候,你的猜测会因为网站的改变而失效。这就是让自动化UI具有挑战性的原因之一。

最后,用户是否可以使用firebugs手动更改任何值以使其惟一,这样他就不需要动态地查找元素了?

不是的。当网页刷新时,Firebug所做的更改就会消失。

票数 1
EN

Stack Exchange QA用户

发布于 2016-08-22 14:43:01

Q1和Q3反应充分。

re Q2:如果可能的话,要像避免瘟疫一样避免XPath。它又慢又脆。通常框架开发人员对元素使用动态ID(比如角)。因此,让开发人员去吃比萨饼,并向他们解释为您需要交互的所有元素设置一个名称或特定的CSS类是多么重要。CSS类很便宜,元素可以有多个CSS类,这样的类(用于定位元素)不需要有任何与其相关的格式--这只是定位元素的一种帮助。

当然,名称或CSS类并不是唯一的,因此您将得到元素数组。如果你幸运的话,数组的长度是1,你就完成了。如果运气不太好,您可以查看已定位的元素,并通过其他属性查找目标元素。与XPath的斗争总是更好。

如果您的开发人员对测试的需求没有反应,并且不愿意通过添加If /name//CSS类来帮助您,那么就去他们所在的公司工作吧:生命太短,无法与薄片的XPath抗争。祝好运!

票数 1
EN
页面原文内容由Stack Exchange QA提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://sqa.stackexchange.com/questions/22158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档