<li class="b-result m-wrng" id="result-panel" style="cursor: pointer;">
<li class="b-result m-corr" id="result-panel" style="cursor: pointer;">
Если же class="b-result m-corr" - тест нужно продолжить.
Есть ли какая-то возможность это реализовать?
Отправлено 21 декабря 2017 - 15:46
<li class="b-result m-wrng" id="result-panel" style="cursor: pointer;">
<li class="b-result m-corr" id="result-panel" style="cursor: pointer;">
Отправлено 21 декабря 2017 - 17:22
В чем собственно проблема? В составлении условия или локатора?
Это, конечно, возможно.
Отправлено 21 декабря 2017 - 17:56
В чем собственно проблема? В составлении условия или локатора?
Это, конечно, возможно.
Никак не могу сообразить как оформить локатор.
Отправлено 21 декабря 2017 - 17:56
написать 2 теста, в одном сделать неправильный ввод и дождаться первого элемента
в другом тесте сделать правильный ввод и дождаться второго элемента
Отправлено 21 декабря 2017 - 18:58
Примерно так, при желании можно еще ID добавить.
XPath
//li[contains(@class,'m-wrng')] //li[contains(@class,'m-corr')]
CSS
li[class*='m-wrng'] li[class*='m-corr']
Отправлено 21 декабря 2017 - 18:58
написать 2 теста, в одном сделать неправильный ввод и дождаться первого элемента
в другом тесте сделать правильный ввод и дождаться второго элемента
Вот только я спрашивал совсем не об этом.
Кроме того, class может быть "b-result m-corr" и после десятка вводов, а может стать "b-result m-wrng" и после первого. Поэтому и нужен if цикл.
Отправлено 21 декабря 2017 - 19:26
Примерно так, при желании можно еще ID добавить.
XPath
//li[contains(@class,'m-wrng')] //li[contains(@class,'m-corr')]CSS
li[class*='m-wrng'] li[class*='m-corr']
Поправьте меня, пожалуйста. Никак не могу добиться работы теста.
Сейчас мой код выглядит так:
if(webDriver.findElement(By.xpath("//li[contains(@class,'m-corr')]")).isDisplayed()){
//делай это.
}
else if(webDriver.findElement(By.xpath("//li[contains(@class,'m-wrng')]")).isDisplayed()){
//сделай так.
}
В случае если отображается m-corr - выполняется все внутри if и тест завершается. Но если первым отображается m-wrong - тест падает на if и до else if даже не доходит
Отправлено 22 декабря 2017 - 07:34
Примерно так, при желании можно еще ID добавить.
XPath
//li[contains(@class,'m-wrng')] //li[contains(@class,'m-corr')]CSS
li[class*='m-wrng'] li[class*='m-corr']Поправьте меня, пожалуйста. Никак не могу добиться работы теста.
Сейчас мой код выглядит так:
if(webDriver.findElement(By.xpath("//li[contains(@class,'m-corr')]")).isDisplayed()){//делай это.
}
else if(webDriver.findElement(By.xpath("//li[contains(@class,'m-wrng')]")).isDisplayed()){
//сделай так.
}
В случае если отображается m-corr - выполняется все внутри if и тест завершается. Но если первым отображается m-wrong - тест падает на if и до else if даже не доходит
Все правильно, падает потому что не находит элемент.
Я бы в вашем случае получал элемент по id, насколько видно из примера он одинаковый для обоих случаев. А потом получал бы атрибут и проверял его в if.
Отправлено 22 декабря 2017 - 08:11
Поправьте меня, пожалуйста. Никак не могу добиться работы теста.
Сейчас мой код выглядит так:
if(webDriver.findElement(By.xpath("//li[contains(@class,'m-corr')]")).isDisplayed()){//делай это.
}
else if(webDriver.findElement(By.xpath("//li[contains(@class,'m-wrng')]")).isDisplayed()){
//сделай так.
}
В случае если отображается m-corr - выполняется все внутри if и тест завершается. Но если первым отображается m-wrong - тест падает на if и до else if даже не доходит
Либо как вам подсказали выше, либо:
if(webDriver.findElements(By.xpath("//li[contains(@class,'m-corr')]")).size() > 0){ //делай это. } else if(webDriver.findElements(By.xpath("//li[contains(@class,'m-wrng')]")).size() > 0){ //сделай так. }
Отправлено 22 декабря 2017 - 08:34
вообще тест не должен содержать таких условий
получается что тест прогоняет только один вариант из двух, чуть ли не рандомно?
Отправлено 22 декабря 2017 - 09:13
Все правильно, падает потому что не находит элемент.
Я бы в вашем случае получал элемент по id, насколько видно из примера он одинаковый для обоих случаев. А потом получал бы атрибут и проверял его в if.
То есть примерно так?
Поправьте меня, пожалуйста. Никак не могу добиться работы теста.
Сейчас мой код выглядит так:
if(webDriver.findElement(By.xpath("//li[contains(@class,'m-corr')]")).isDisplayed()){//делай это.
}
else if(webDriver.findElement(By.xpath("//li[contains(@class,'m-wrng')]")).isDisplayed()){
//сделай так.
}
В случае если отображается m-corr - выполняется все внутри if и тест завершается. Но если первым отображается m-wrong - тест падает на if и до else if даже не доходит
Либо как вам подсказали выше, либо:
if(webDriver.findElements(By.xpath("//li[contains(@class,'m-corr')]")).size() > 0){ //делай это. } else if(webDriver.findElements(By.xpath("//li[contains(@class,'m-wrng')]")).size() > 0){ //сделай так. }
Все отлично работает, безмерно благодарен Вам!
Отправлено 22 декабря 2017 - 09:19
вообще тест не должен содержать таких условий
получается что тест прогоняет только один вариант из двух, чуть ли не рандомно?
Есть некий тест (экзамен), в котором после ответа может отображаться либо True, либо False. Вот мой @Test и вводит рандомные ответы, дожидается появления обоих состояний (True и False) и завершает работу.
Отправлено 22 декабря 2017 - 09:21
Примерно так, при желании можно еще ID добавить.
XPath
//li[contains(@class,'m-wrng')] //li[contains(@class,'m-corr')]CSS
li[class*='m-wrng'] li[class*='m-corr']Поправьте меня, пожалуйста. Никак не могу добиться работы теста.
Сейчас мой код выглядит так:
if(webDriver.findElement(By.xpath("//li[contains(@class,'m-corr')]")).isDisplayed()){//делай это.
}
else if(webDriver.findElement(By.xpath("//li[contains(@class,'m-wrng')]")).isDisplayed()){
//сделай так.
}
В случае если отображается m-corr - выполняется все внутри if и тест завершается. Но если первым отображается m-wrong - тест падает на if и до else if даже не доходит
Все правильно, падает потому что не находит элемент.
Я бы в вашем случае получал элемент по id, насколько видно из примера он одинаковый для обоих случаев. А потом получал бы атрибут и проверял его в if.
Подозреваю, что я понял Вас не верно, потому что снова написал что-то не рабочее
if(webDriver.findElement(By.id("result-panel")).getAttribute("//li[contains(@class,'m-corr')]"){
System.out.println("True");
}
else if(webDriver.findElement(By.id("result-panel")).findElement(By.xpath("//li[contains(@class,'m-wrng')]")).isDisplayed()){
System.out.println("False");
}
Не могли бы Вы показать что имели ввиду?
Отправлено 22 декабря 2017 - 09:41
Есть некий тест (экзамен), в котором после ответа может отображаться либо True, либо False. Вот мой @Test и вводит рандомные ответы, дожидается появления обоих состояний (True и False) и завершает работу.
допустим такая ситуация:
тест вводит рандомные ответы и все они правильные, тогда срабатывает проверка правильных состояний и тест завершается. А ведь возможно что неправильное состояние вообще не работает
Отправлено 22 декабря 2017 - 09:49
Примерно так, при желании можно еще ID добавить.
XPath
//li[contains(@class,'m-wrng')] //li[contains(@class,'m-corr')]CSS
li[class*='m-wrng'] li[class*='m-corr']Поправьте меня, пожалуйста. Никак не могу добиться работы теста.
Сейчас мой код выглядит так:
if(webDriver.findElement(By.xpath("//li[contains(@class,'m-corr')]")).isDisplayed()){//делай это.
}
else if(webDriver.findElement(By.xpath("//li[contains(@class,'m-wrng')]")).isDisplayed()){
//сделай так.
}
В случае если отображается m-corr - выполняется все внутри if и тест завершается. Но если первым отображается m-wrong - тест падает на if и до else if даже не доходит
Все правильно, падает потому что не находит элемент.
Я бы в вашем случае получал элемент по id, насколько видно из примера он одинаковый для обоих случаев. А потом получал бы атрибут и проверял его в if.
Подозреваю, что я понял Вас не верно, потому что снова написал что-то не рабочее
if(webDriver.findElement(By.id("result-panel")).getAttribute("//li[contains(@class,'m-corr')]"){
System.out.println("True");
}
else if(webDriver.findElement(By.id("result-panel")).findElement(By.xpath("//li[contains(@class,'m-wrng')]")).isDisplayed()){
System.out.println("False");
}
Не могли бы Вы показать что имели ввиду?
if(webDriver.findElements(By.xpath("//li[contains(@class,'m-corr')]").size() != 0){ ...
Отправлено 26 декабря 2017 - 08:31
if(webDriver.findElement(By.id("result-panel")).getAttribute("//li[contains(@class,'m-corr')]"){System.out.println("True");}
Некорректно, т.к. у элемента li нет атрибута с названием "//li[contains(@class,'m-corr')]".
Кроме того, getAttribute - просто вернут значение указанного атрибута, а if работает с true/false - т.е. в if'е полученное значение атрибута нужно ещё и сравнить с чем-нибудь.
Например, if ( driver.findElement(By.cssLocator(locator)).getAttribute("value").contains("smth") ) { ... }
System.out.println(webDriver.findElements(By.xpath("//li[contains(@class,'m-corr')]").size() > 0)
0 пользователей, 0 гостей, 0 анонимных