Есть выпадающее меню.В нем есть три значения. Проблемма в том, что при прохождение тестов в хроме, при входе на страницу по дефолту выдает запись №1, а в Эксплорере запись №2.
Мне нужно перед основными шагами проверить текст, если запись №1, то проходить тесты дальше, если другое(№2 или №3) изменить(вот код изменения, к примеру driver.findElement(By.xpath(".//div[2]/div/div/div/div/div/ul[1]/li")).click(); - нажатие на это меню driver.findElement(By.xpath("//div/div/div/div/ul[1]/li/ul/li[2]/a")).click();) - выбор значения №1 )
на №1 и после этого идти по основным шагам
Я бы предложил сначала оптимизировать локаторы у элементов, чтобы не было “ехал div через div и div’ом погоняет”, наверняка меню это какой то блок и пункты в этом меню обладают какими-то атрибутами за которые можно зацепиться.
Если нужно взять и проверить текст тогда: driver.findElement().getText();
после чего проверяем его через .equals() например.
Это понятно. Вопрос не в том, как просто вытянуть и сравнить. Вопрос в то, как правильно реализовать “если”, если значение равно
if (значение стоит 1) {тогда исполнять эти действия} иначе {ничего не делать}
Такой должен быть алгоритм,
Если вам всегда нужен пункт 1, то всегда его и выбирайте, без разбора стоит он там уже или нет.
Из описания это никак не влияет на логику самого теста.
При исполнение выходит на else, может не достает до текста?
Вот HTML:
div class=“nav-collapse collapse”
ul class=“nav”
li class=“dropdown”
a class=“dropdown-toggle” href=“javascript:;” data-toggle=“dropdown”
i/
Администрирование
span class=“caret”/></a
Пишу By.xpath(“локатор до /a”).equals(“Администрирование”)
Там элемент 100%стоит(Пусто быть не может).Просто рандомно разные кидает туда. Собственно и для этого мне нужна проверка, какой именно элемент стоит, и что при этом делать.
При исполнение driver.findElement(By.xpath(".//div[2]/div/div/div/div/div/ul[1]/li/a")).getText() и вивода в терминал, выдает “Бизнес администрирование”, но при исполнене нижеуказаного кода
if ((driver.findElement(By.xpath(".//div[2]/div/div/div/div/div/ul[1]/li/a")).getText())!=“Бизнес администрирование”)
{
driver.findElement(By.xpath(".//div[2]/div/div/div/div/div/ul[1]/li/a")).click();
driver.findElement(By.xpath("//div/div/div/div/ul[1]/li/ul/li[3]/a")).click();
} else {}
Даже когда в поле стоит “Бизнес администрирование” он пытается его менять на
“Бизнес администрирование”
driver.findElement(By.xpath(".//div[2]/div/div/div/div/div/ul[1]/li/a")).click();
driver.findElement(By.xpath("//div/div/div/div/ul[1]/li/ul/li[3]/a")).click();
, а по задумке должно падать на else
Каков HTML , таков и xPath все ID динамические, по
атрибутам тяжело добраться(все каряво генерируются).Если делать короче
пути, находит больше чем один элемент(что не есть хорошо)