无法为添加-ons文本找到带有xpath的元素(正确的xpath)

时间:2018-04-28 10:10:04

标签: selenium xpath

driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);       
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);         
driver.get("http://www.spicejet.com");  
Actions action = new Actions(driver); 
action.moveToElement(driver.findElement(By.xpath("//a[contains(text(),'Add-Ons')]")))
      .build().perform();       
Thread.sleep(3000);     
driver.findElement(By.linkText("Hot Meals ")).click();      
driver.close();

无法找到xpath //a[contains(text(),'Add-Ons')

的元素

它的框架是什么?

2 个答案:

答案 0 :(得分:0)

当我通过手动验证时,你的xpath可以找到正确的元素。我怀疑页面没有完全加载,请在sleep之后添加一些dirver.get()用于调试目的。

driver.get("http://www.spicejet.com"); 

Thread.sleep(10*1000) // sleep 10 seconds to wait page open completely.

Actions action = new Actions(driver); 
action.moveToElement(driver.findElement(By.xpath("//a[contains(text(),'Add-Ons')]")))
      .build().perform(); 

答案 1 :(得分:0)

有时使用By.linkText()

无法找到确切元素

您只需使用cssSelector,如下所示:

driver.findElement(By.cssSelector("#header-addons > ul > li:nth-child(5) > a")).click();
Thread.sleep(3000);

而不是行driver.findElement(By.linkText("Hot Meals ")).click();

您也可以使用xpath,如下所示:

driver.findElement(By.xpath("//*[@id=\"header-addons\"]/ul/li[5]/a")).click();
Thread.sleep(3000);