我想验证从开发网站上的多面导航生成的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。
答案 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