在 selenium.get.Text 和 selenium.click 中使用 xpath



我在页面上<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/']

最新更新