从其他位置提取元素时,验证URL的顺序/组成

时间:2019-01-15 11:26:13

标签: javascript java selenium gherkin

我想验证从开发网站上的多面导航生成的URL的顺序。

EG http://EcomWebsite.com/region/s/element1/element2/element3

作为不同测试步骤的一部分,我提取了所需的字符串,然后可以测试URL中是否存在这些字符串。我一直在做

assertThat(displayShopPage.getCurrentURL(),containsString(displayShopPage.element1()));
assertThat(displayShopPage.getCurrentURL(),containsString(displayShopPage.element2()));
assertThat(displayShopPage.getCurrentURL(),containsString(displayShopPage.element3()));

但是我提到我需要检查URL的顺序。

有问题的步骤是

“然后,URL中包含值的顺序必须与构面中的值顺序相同”。

对于Java,Selenium和BDD来说,我还很陌生,所以我感谢您提供的帮助。

编辑: 由于种种原因,我试图避免使用硬编码的URL和要在URL中检查的内容。

Element1等来自类,该类从多面导航元素选项中提取文本。

因此,如果产品数据发生更改,如果我对元素选项中的URL或文本进行硬编码,则多面导航将破坏测试。

因此,为什么我要从元素中提取字符串以与URL进行比较,而不是仅仅检查其自身的URL。

enter image description here

1 个答案:

答案 0 :(得分:2)

getCurrentURL()返回一个字符串,对吗?为什么不简单地将期望的URL组成一个字符串,然后比较这些字符串呢?

currentUrl = displayShopPage.getCurrentURL()
expectedUrl = "http://EcomWebsite.com/" + displayShopPage.CF_PanelText() + "/s/" + displayShopPage.FacetGroup2OptionPanelText()   # compose this from your page source...it isn't clear above what the component order needs to be
assertEquals(currentUrl, expectedUrl)  # I made this up, I don't know the proper syntax for comparing strings