我有一个非常有趣的问题.我有一个xpath,我通过它检索值.
防爆.
System.out.print(driver.findElement(By.xpath("//*[@id='error-box']/ul/li")).getText().toString());
在Firefox和Chrome中,它提供相同的文本,而在IE中则提供不同的文本.
各种浏览器的xpath之间有什么区别,或者是我没有得到的其他问题.
最佳答案 阅读Selenium如何处理Xpath
here.
在Chrome和Firefox中,我右键单击相同的DOM元素(如here所述),选择“复制Xpath”,这就是我得到的:
Chrome:// * [@ id =“js-pjax-container”] / div2 / div2 / form / button
Firefox(带Firebug):/ html / body / div [4] / div2 / div2 / div2 / form / button
(一个是属性值,另一个是(FF)是绝对路径,这表明FF不了解Crhome生成的Xpath)
因此,对于Selenium测试目的,它在浏览器之间很重要. (我没有在IE上测试)
我跑了这个
@Test
public void testGitHubButton(){
WebDriver driver = new FirefoxDriver();
driver.get("https://github.com/");
String signup = driver.findElement(By.xpath("/html/body/div[4]/div[1]/div[1]/div[1]/form/button")).getText();
Assert.assertEquals("Testing for string equality", "Sign up for GitHub", signup );
driver.close();
driver.quit();
}
测试通过了.如果我复制粘贴Chrome的Xpath,它将失败.