【问题标题】:Selenium: Is it possible to concatenate an xpath with a variable?Selenium:是否可以将 xpath 与变量连接起来?
【发布时间】:2010-09-29 01:14:40
【问题描述】:

我的元素的 xpath 变得非常难以阅读。

//div[@id='main_content']/div[2]/div[2]/div[2]/div[4]/table/tbody/tr[2]/td/form/fieldset/ p[1]/输入

如果我可以将其中的大部分存储为变量并在以后像这样使用它,那就太好了:

|断言元素呈现 | ${myForm} 。 /fieldset/p[1]/输入 |

这样的事情可能吗?这将使我的测试更容易阅读!

【问题讨论】:

    标签: selenium fitnesse


    【解决方案1】:

    真的应该将你的 selenium espressions 锚定在元素的 ID 中。在 2 个月内,没有人会对 xpath 指向的内容有丝毫的了解,尤其是在您需要找出原因时测试被破坏的情况下。我们经常将 id 添加到元素中,以使测试更容易。我们已经学会接受我们以一种特殊的方式编写 Java 代码以使其可测试,而且我认为 HTML 也可以。

    【讨论】:

    • 我完全同意你的看法。我给出的例子可能不是最好的说明我为什么要做到这一点。我之所以尝试这样做是因为元素 ID 是随机生成的,所以我不知道它们是什么。
    • 好吧,你可以在 dom 结构中进一步锚定,或者制作你知道的 som id
    • 如果 id 来自业务数据,您可以在附近的某处添加位置 id
    【解决方案2】:

    你可以写:

    store | //div[@id='main_content']/div[2]/div[2]/div[2]/div[4]/table/tbody/tr[2]/td/form | myForm
    assertElementPresent | xpath=${myForm}/fieldset/p[1]/input
    

    然而,正如 Krosenvold 所说,长 xpath 可能非常脆弱。如果您担心代码的可读性,并希望将所有定位器放在一个可以进行级联更改的文件中,您可能需要考虑使用 UI-Element 映射。

    【讨论】:

      猜你喜欢
      • 2023-01-26
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多