задача: сделать так, чтобы заходить в систему под своим логином-паролем, находить там данные и редактировать их.
Создала 3 класса:
1. Основной
2. Поиск
Проблема в том, что при реализации класса поиск открывается лишнее пустое окно браузера хром и система начинает искать уже в нем (пустом окне), а там, естественно, нужных элементов нет. Я понимаю, что проблема в том, что в классе поиск я инициазирую хромдрайвер, но есло я его оттуда убираю, то все мои xpath краснеют.
Есть возможность это обойти? Ошибка дурацкая, но я не понимаю, где косячу.
Основной
package ex1;
import exMail.SleepUtil;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
public class RTest {
@Test
public void rTestAll() {
System.setProperty("webdriver.chrome.driver", "C:/Users/kate/Downloads/chromedriver_win32 (2)/chromedriver.exe");
ChromeDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("http://test/main");
SleepUtil.sleep(9000);
WebElement element = driver.findElementByXPath((".//a[text() = 'Войти']"));
element.click();
SleepUtil.sleep(9000);
WebElement element2 = driver.findElementByXPath(("//input[@placeholder = 'Логин']"));
element2.sendKeys("TestAndTest", Keys.ENTER);
WebElement element3 = driver.findElementByXPath(("//input[@placeholder = 'Пароль']"));
element3.sendKeys("TestAndTest", Keys.ENTER);
FindTest Test = new FindTest(element, driver);
Test.findTESTadOpen();
}
}
Поиск
package ex1;
import exMail.SleepUtil;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;
public class FindTest {
WebElement Testelement;
WebDriver driver;
public FindTest (WebElement Testlement, WebDriver driver) {
this.Testelement = Testelement;
this.driver = driver;
}
public void findTESTadOpen() {
ChromeDriver driver = new ChromeDriver();
WebElement elementFind;
elementFind = driver.findElementByXPath(("//input[@placeholder = 'Введите текст для поиска...']"));
elementFind.click();
elementFind.sendKeys("Нет Наркотикам!", Keys.ENTER); ////*[text()='Антинар']
SleepUtil.sleep(7000);
WebElement elementTest = driver.findElementByXPath(("//td[@class = 'left-align no-datable-with-reason z-listcell']"));
SleepUtil.sleep(7000);
elementTest.click();//left-align no-datable-with-reason z-listcell
SleepUtil.sleep(5000);
WebElement elementEdit;
elementEdit = driver.findElementByXPath(("//button[@title = 'Редактировать сведения']"));
elementEdit.click();
}
}
Екатерина Грузинцева
0 уровень
Лишние окна при загрузке классов
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Сергей Я Java Developer в DXC/Luxoft Expert
16 сентября 2021, 11:14
Ты несколько раз создаешь драйвер, соответственно несколько раз открываешь окна.
Если драйвер создается, настраивается в отдельном методе, то метод обычно помечается @BeforeTest (вариации в зависимости от тестового фреймворка и бизнес-логики), и в самом тест создания драйвер не происходит.
Да и глядя на код, ты сам не понимаешь что делаешь....
От себя могу посоветовать изучить паттерн PageObject, потуги которого в этом коде пытались воспроизвести или изучить труды Баранцева (Основы Селением Вебдрайвер).
В сам PO объект драйвера передается аргументом конструктора (при использовании голого селениума), а не создается новым.
0
Алекс Гюнтер
16 сентября 2021, 08:24
Vladimir прав, но это не ответ. У Selenium есть аргументы всякие для запуска, например --headless
, это запустит браузер без GUI окна.
// options.addArguments("start-maximized");
// options.addArguments(optionsAddArguments);
// options.addArguments("enable-automation");
// options.addArguments("--blink-settings=imagesEnabled=false"); // NO Images
// options.addArguments("--headless", "--disable-gpu", "--blink-settings=imagesEnabled=false");
// options.addArguments("--no-sandbox");
// options.addArguments("--disable-infobars");
// options.addArguments("--disable-dev-shm-usage");
// options.addArguments("--disable-browser-side-navigation");
driver.get("http://test/main"); - создаёт запрос на запуск. Посмотри может 2 раза вызываешь,
// options.addArguments("--disable-gpu");
0
Сергей Я Java Developer в DXC/Luxoft Expert
16 сентября 2021, 11:18
причем тут то что вы пишите, если он сам создает несколько окон и не указывая в каком работает, пытается что-то делать. Чтобы работать с фреймворком, нужно изучить как он работает, а не просто копировать код из чужих репозиториев
+2
VladimirMaster
14 сентября 2021, 14:52
Используй тег code для форматирования кода. Невозможно же смотреть на эту бесформенную простыню из символов.
Копируй код и вставляй в тег code. Тег code есть в верхней панели, когда пишешь пост или сообщение.
+4