我在页面上<a href="/address_shops/">Адреса магазинов</a>
并想要存储文本,然后单击此链接并验证我要去的页面是否在标题中包含此文本。所以我试图通过xpath找到元素,selenium.getText得到了正确的结果,但selenium.click转到另一个链接。我哪里犯了错误?提前感谢!
String m_1 = selenium.getText("xpath=html/body/div[3]/div[2]/div[1]/h4[1]");
selenium.click("xpath=html/body/div[3]/div[2]/div[1]/h4[1]");
selenium.waitForPageToLoad("30000");
assertTrue(selenium.getText("css=h3").contains(m_1));
page:http://www.svyaznoy.ru/map/
恢复:使用xpath=//descendant::a[@href='/address_shops/'][2]
或css=div.deff_one_column a[href='/address_shops/']
获得正确的结果
使用 xpath=//a[@href='/address_shops/']
- 元素当前不可见 xpath=//a[@href='/address_shops/'][2]
- 未找到元素
表达式开头缺少斜杠。我有点惊讶这完全通过了 - 第一个斜杠的意思是"从根节点开始"。
另外,最好选择<a>
元素而不是<h>
。有时它有效,有时是错误点击,有时点击根本没有做任何事情。尽量具体
试试这个。
String m1 = selenium.getText("xpath=/html/body/div[3]/div[2]/div/h4/a");
selenium.click("xpath=/html/body/div[3]/div[2]/div/h4/a");
selenium.waitForPageToLoad("30000");
// your variable is named m1, but m_1 was used here
assertTrue(selenium.getText("css=h3").contains(m1));
顺便说一下,您还可以使用更好的 XPath 表达式。请参阅文档,它确实很有帮助。举个例子,这也行得通,而且编写和阅读起来要容易得多:
String m1 = selenium.getText("xpath=//a[@href='/address_shops/']");
selenium.click("xpath=//a[@href='/address_shops/']");
抱歉,没有注意到页面链接。第二个链路的 Css 可以是类似的css=div.deff_one_column a[href='/address_shops/']