#java #string #selenium #if-statement #automation
#java #строка #селен #if-statement #автоматизация
Вопрос:
Я автоматизирую веб-магазин на selenium / Java. Если пользователь не выбрал размер продукта, появляется сообщение о том, что «это обязательное поле» рядом с размером. Я пытаюсь написать инструкцию ‘if’, которая утверждает, присутствует ли это сообщение, и действие, которое нужно предпринять, если оно есть, но я не могу заставить его работать. Это было бы что-то вроде этого:
WebElement sizeIsRequiredMsg = driver.findElement(By.cssSelector("#advice-required-entry-select_30765)"));
WebElement sizeSmallButton = driver.findElement(By.cssSelector("#product_info_add > div.add-to-cart > div > button"))
if (sizeIsRequiredMsg.equals("This is a required field.")) {
action.moveToElement(sizeSmallButton);
action.click();
action.perform();
}
Я попробовал несколько разных вариантов, используя сообщение ‘это обязательное поле’ в качестве веб-элемента. Не уверен, нужно ли мне каким-то образом преобразовать WebElement для сообщения в строку? Или включить логическое значение? Кто-нибудь может помочь?
Комментарии:
1. Возвращаемый тип переменной sizeIsRequiredMsg — WebElement, поэтому вы не можете сравнить WebElement со строкой, поэтому вам нужен метод sizeIsRequiredMsg.getText() для извлечения текста, после чего вы можете сравнить две строки.
Ответ №1:
Попробуйте использовать getText()
что-то вроде этого:
РЕДАКТИРОВАТЬ Я добавил правильные cssSelectors и добавил try catch
:
WebElement addToCartButton = driver.findElement(By.cssSelector("#product_info_add button"));
action.moveToElement(addToCartButton);
action.click();
action.perform();
try {
WebElement sizeIsRequiredMsg = driver.findElement(By.cssSelector(".validation-advice"));
WebElement sizeSmallButton = driver.findElement(By.cssSelector(".swatches-container .swatch-span:nth-child(2)"))
if (sizeIsRequiredMsg.getText() == "This is a required field.") {
action.moveToElement(sizeSmallButton);
action.click();
action.perform();
}
} catch (Exception e) {
System.out.println(e);
logger.log(Level.SEVERE, "Exception Occured:", e);
};
Надеюсь, это поможет вам!
Комментарии:
1. Это выполняется сейчас, но по-прежнему не выполняет то, что я хочу (нажмите кнопку «Размер маленький»). В любом случае спасибо 🙂
2. ‘org.openqa.selenium. Исключение InvalidSelectorException: недопустимый селектор: был указан недопустимый селектор ‘
3. @golfumbrella убедитесь, что вы импортировали action =
import org.openqa.selenium.interactions.Actions;
и создали новую переменную Action =Actions action;
4. @golfumbrella вы можете связать действие следующим образом:
action.moveToElement(sizeSmallButton).click().perform();
5. Да, я все это сделал. Я думаю, проблема все еще заключается в том, что он читает текст «это обязательное поле». Я не уверен, что использую правильный селектор, но, похоже, я перепробовал их все