我在页面上有<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]
- 找不到元素
答案 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/']