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

时间:2012-04-11 09:41:19

标签: xpath selenium selenium-rc

我在页面上有<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));

页面: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] - 找不到元素

2 个答案:

答案 0 :(得分:1)

表达式的开头有一个缺失的斜杠。我对此完全感到惊讶 - 第一个斜杠意味着“从根节点开始”。

此外,最好选择<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表达式。请参阅the documentation确实非常有用。举个例子,这也可以,并且更容易编写和阅读:

String m1 = selenium.getText("xpath=//a[@href='/address_shops/']");
selenium.click("xpath=//a[@href='/address_shops/']");

答案 1 :(得分:0)

抱歉,没有注意到页面链接。第二个链接的Css可能类似于css=div.deff_one_column a[href='/address_shops/']

相关问题