Я новичок в Selenium и довольно новичок в Java. Я тестировщик по профессии, а не разработчик, поэтому я пытаюсь постепенно преобразовать свои сценарии Selenium IDE во что-то более надежное и «правильное». К сожалению, я борюсь с довольно простой задачей. Как только веб-страница загружается, я хочу нажать кнопку. Это отлично работает в Selenium IDE, но только если я установил скорость «медленно».
Я могу заставить его работать, используя следующий код, но ТОЛЬКО если я включу строку thread.sleep. Я читал, что это не очень хорошая идея, поэтому я пытаюсь реализовать что-то более разумное, используя webDriverWait.
public class mytestclass {
private WebDriver driver;
private String baseUrl;
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "";
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
}
@Test
public void test1() throws Exception {
driver.get(baseUrl + "file:///C:/_VM/testpage.html");
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(By.id("button_X")));
//Thread.sleep(2000);
driver.findElement(By.id("button_X")).click();
}
}
Таким образом, тот факт, что это работает при выполнении строки thread.sleep, заставляет меня поверить, что строка wait.until возвращает значение true, когда кнопка на самом деле не готова. Я также пытался переключить ExpectedConditions на другие идентификаторы, такие как visibilityOfElementLocated (по локатору) и присутствияOfElementLocated (по локатору), но они действуют одинаково.
Я делаю что-то не так здесь? Есть ли что-то еще, что я могу попробовать?
Боюсь, я не могу дать ссылку на сайт, так как он связан с работой. Он читает много изображений и запускает много javascript при запуске, поэтому для запуска требуется некоторое время, но именно поэтому я хочу добавить логику ожидания!
Спасибо за любой совет.