Выполните щелчок selenium с идентификатором, основанным на разных классах Java

#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");