#java #selenium
Вопрос:
У меня есть два элемента селена, на которые мне нужно нажать. Но эти элементы имеют другой идентификатор.
findElement(By.id(ID_1)).click();
findElement(By.id(ID_2)).click();
Элемент поиска(By.id(ID_1)).click() следует нажать, если выполняется Class_1, если вызывается Class_2, то findElement(By.id(ID_2)).следует нажать кнопку ().
Я пытаюсь избежать дублирования кода, потому что эти выше 2 элемента поиска находятся внутри одного метода, который называется Class_1 и Class_2.
Я пробовал что-то подобное, но это не решило мою проблему
if (Class_1.class)
{
findElement(By.id(ID_1)).click();
}
else if (Class_2.class)
{
findElement(By.id(ID_2)).click();
}
Я получаю «Несоответствие типов: не удается преобразовать из класса<Class_1> в логическое значение». Я имею в виду, что я пытаюсь сделать вот так. Если это class_1, то запустите это, иначе запустите еще, если часть.
Заранее спасибо за любые рекомендации.
Комментарии:
1. Я не понял, почему вы хотите дифференцироваться по классу ? почему не в одном классе ?
2. @cruisepandey, потому что эти два класса ссылаются на разные IP-адреса для выполнения некоторых задач. и оба класса имеют доступ к этому методу. Если я создам два метода, проблема будет решена, но код будет дублироваться.
Ответ №1:
Вы не можете разделить свой тест на два (или более) разных класса. Вместо этого используйте один класс и параметризуйте свой метод:
public void myTestMethod(String ipAdress) {
if (ipAdress.equals("FOO_IP")) {
findElement(By.id("FOO_ID")).click();
}
else if (ipAdress.equals("BAR_IP")) {
findElement(By.id("BAR_ID")).click();
}
else {
// code for uknown ip adress
}
}
и просто вызовите метод с нужным аргументом:
myTestMethod("FOO_IP");
myTestMethod("BAR_IP");