Я создаю тест объектно-ориентированным способом и делю свои коды на отдельные классы.
Это прекрасно работает, если я пишу свои коды процедурно. Но мне интересно, почему он не может найти элемент, когда я разделяю его на несколько классов.
Вот мой код, который я написал процедурно и работает нормально:
driver.get(common.WP_ADMIN);
WebElement user_name = driver.findElement(By.name("log"));
user_name.sendKeys(common.WP_USER);
WebElement password = driver.findElement(By.name("pwd"));
password.sendKeys(common.WP_PASS);
WebElement btn_submit = driver.findElement(By.name("wp-submit"));
btn_submit.submit();
driver.get(common.WP_ADMIN + "/customize.php");
//It can locate #adminmenu and it's clickable
WebElement site_identify = driver.findElement(By.cssSelector("#adminmenu"));
site_identify.click();
Но если я разделю свои коды на несколько классов
Элемент "#adminmenu" не может быть найден:
loginWP Класс:
driver.get(common.WP_ADMIN);
WebElement user_name = driver.findElement(By.name("log"));
user_name.sendKeys(common.WP_USER);
WebElement password = driver.findElement(By.name("pwd"));
password.sendKeys(common.WP_PASS);
WebElement btn_submit = driver.findElement(By.name("wp-submit"));
btn_submit.submit();
driver.get(common.WP_ADMIN + "/customize.php");
AdminMenu Класс:
public class AdminMenu {
public void adminMenuTest(WebDriver driver) {
//It can't be loacted
WebElement site_identify = driver.findElement(By.cssSelector("#adminmenu"));
}
}
Основной класс:
//Login to Wordpress
login.loginWP(common.WP_ADMIN, common.WP_USER, common.WP_PASS);
// Begin test
AdminMenu adminMenu = new AdminMenu();
adminMenu.adminMenuTest(driver);
Это показывает мне это:
Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"#adminmenu"}
Почему не удается найти элемент, когда я использую классы?