在if-else语句中,程序显示错误
no such element: Unable to locate element: {"method":"xpath","selector":"//a[contains(.,'Frizerul')]/ancestor::div[contains(@class, 'js-answer-element')]//div[@class='sg-actions list__hole']//li[2]//span[contains(.,'raportată ca abuz')]"}
并且不执行else(在这种情况下在控制台中显示消息)
方法是:
public void reported(String username){
if(driver.findElement(By.xpath("//a[contains(.,'"+username+"')]/ancestor::div[contains(@class, 'js-answer-element')]//div[@class='sg-actions-list__hole']//li[2]//span[contains(.,'raportată ca abuz')]")).isDisplayed()==true)
{
System.out.println ("Tema raportata " + driver.getCurrentUrl());
}
else{
System.out.println ("Tema nneraportata"+driver.getCurrentUrl());
}
}
任何人都可以解释我的错误吗?
答案 0 :(得分:0)
我认为在执行代码时该元素不可用。
这是否是延迟加载的内容?你确定它的元素是html吗?你使用浏览器工具编写xpath吗?
Chrome / Firefox提供了很好的工具来帮助您编写Xpath代码。
答案 1 :(得分:0)
我发现和工作的解决方案是将其他内容放入其他内容中。该方法如下所示:
public void reported(String username){
if(driver.findElement(By.xpath("//a[contains(.,'"+username+"')]/ancestor::div[contains(@class, 'js-answer-element')]//div[@class='sg-actions-list__hole']//li[2]")).getText().contains("raportată ca abuz"))
{
System.out.println ("Tema raportata " + driver.getCurrentUrl());
}
else{
if(driver.findElement(By.xpath("//a[contains(.,'"+username+"')]/ancestor::div[contains(@class, 'js-answer-element')]//div[@class='sg-actions-list__hole']//li[2]")).getText().contains("Raportează abuzul!"))
{
System.out.println ("Tema neraportata " + driver.getCurrentUrl());
}
}
}
答案 2 :(得分:0)
试试这个:
public void reported(String username){
String elementXpath = "//a[contains(.,'"+username+"')]/ancestor::div[contains(@class, 'js-answer-element')]//div[@class='sg-actions-list__hole']//li[2]//span[contains(.,'raportată ca abuz')]";
WebElement ele = driver.findElement(By.xpath(elementXpath));
if(null == ele || ele.isDisplayed()==false)
{
System.out.println ("Tema nneraportata"+driver.getCurrentUrl());
}
else{
System.out.println ("Tema raportata " + driver.getCurrentUrl());
}
}