单击元素仅间歇工作

时间:2014-11-25 20:17:18

标签: java selenium-webdriver

我有这个奇怪的问题。测试的目的是登录并单击一个元素。登录测试似乎一致,但登录后单击元素似乎间歇性地工作。如果我运行测试10次,它似乎工作了4次。

driver.get("SomeWebsite");
driver.manage().window().maximize(); 
driver.manage().timeouts().pageLoadTimeout(1, TimeUnit.MINUTES);
driver.findElement(By.xpath("//li[2]/a")).click(); 
driver.manage().timeouts().pageLoadTimeout(100, TimeUnit.SECONDS);
driver.findElement(By.cssSelector("input[id*='textfield']")).sendKeys("someemail");
driver.findElement(By.cssSelector("input[type*='password']")).sendKeys("password");
driver.findElement(By.xpath("//div[3]/em/button")).click(); 

到目前为止,这些代码似乎工作正常。但是,下面的代码是我遇到的问题。

WebElement myDynamicElement = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id("header")));


driver.findElement(By.xpath("//li/a")).click(); // corresponding HTML <a href="#!mainmenu">Menu</a>

1 个答案:

答案 0 :(得分:0)

你有2个选择。

1 )似乎你过度使用了pageLoadTimeouts,尝试使用隐式等待并在驱动程序加载时设置一次,如下所示

driver.get("SomeWebsite");
driver.manage().window().maximize(); 
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
driver.findElement(By.xpath("//li[2]/a")).click(); 
driver.findElement(By.cssSelector("input[id*='textfield']")).sendKeys("someemail");
driver.findElement(By.cssSelector("input[type*='password']")).sendKeys("password");
driver.findElement(By.xpath("//div[3]/em/button")).click(); 

为了稳定起见,您可以将隐式等待调整为不同的值。尝试尝试40或20秒的试运行。

2 )虽然这不是一个完美的解决方案,但您可以使用Raw等待或 Thread.Sleep 暂停执行一段时间,然后再单击给您的元素麻烦这包括一个神奇的数字,但已知它可以在10次中有9次工作。