我收到错误,因为在执行其中一个测试应用程序的代码时无法找到元素。我编写了使用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();
}
}
答案 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")