没有这样的元素异常

时间:2017-07-24 11:10:29

标签: css xpath

我收到错误,因为在执行其中一个测试应用程序的代码时无法找到元素。我编写了使用css和xpath定位元素的代码,但仍然遇到同样的问题。任何人都可以帮忙吗?

代码:

public static WebDriver driver;

    public static void setUp() {

        System.setProperty("webdriver.ie.driver", "Resources\\IEDriverServer.exe"); 
        driver = new InternetExplorerDriver();

        //System.setProperty("webdriver.gecko.driver", "D:\\selenium\\geckodriver\\geckodriver.exe");   

        driver.get("http://demo.actitime.com/");
        driver.manage().window().maximize();

        driver.findElement(By.id("username")).sendKeys("user");

        driver.findElement(By.name("pwd")).sendKeys("user");

        driver.findElement(By.cssSelector("#loginButton > div")).click();

        //Wait<WebDriver> wait=new WebDriverWait(driver, 30);

        //wait.until(ExpectedConditions.presenceOfElementLocated(By.id("logoutLink")));

        //String parentWindow= driver.getWindowHandle();

        driver.findElement(By.cssSelector("div.popup_menu_icon.support_icon > div.popup_menu_arrow")).click();

//driver.findElement(By.xpath("id('topnav')/x:tbody/x:tr[1]/x:td[5]/x:table/x:tbody/x:tr/x:td[2]/x:div/x:table/x:tbody/x:tr[2]/x:td/x:div/x:div[2]/x:div/x:div[1]/x:div[2]")).click();


        driver.findElement(By.linkText("User Guide")).click();
    }

    public static void tearDown() {
        driver.quit();
    }

    public static void main(String[] args) {


        // TODO Auto-generated method stub

        setUp();

        tearDown();


    }

}

1 个答案:

答案 0 :(得分:1)

当您单击“登录”按钮时,浏览器需要几秒钟的时间来发送您的请求并返回/呈现响应页面。但是在您的代码中,您在点击后立即尝试单击“帮助”按钮登录按钮(帮助按钮尚未显示),由于您仍然在登录页面上,因此无法在当前页面中找到您要查找的元素。

所以你需要等到登录后的页面,然后你可以选择并点击你想要的任何内容。

要等待元素可点击,请使用以下代码:

WebDriverWait wait = new WebDriverWait(driver, timeoutInSeconds);
wait.until(ExpectedConditions.elementToBeClickable(cssSelector("div.popup_menu_icon.support_icon > div.popup_menu_arrow"))); 

修改

您似乎正在使用错误的css选择器。试试这个:

cssSelector("div.popup_menu_button.popup_menu_button_support")