Я уже создал ботов, средства автоматического выбора изображений и многое другое, и я никогда не использовал метод By.xpath. Имя класса намного проще в использовании!
public void f(){
Driver.get(url);
String getInputFocusId = "select2-input";
Driver.findElement(By.className(getInputFocusId).click();
//now focused!
String text = Driver.findElement(By.className("select2-match").getText();
//text is the first default search match of the list.
}
Есть и более сложный способ. В Selenium вы можете отправлять ключи элементу.
Если элемент ввода сфокусирован, фокусируется и первое совпадение. При нажатии на Enter найдется совпадение в фокусе, и оно будет отображаться в элементе ввода. Наконец, вы должны прочитать данные из входного элемента!
public void f(){
Driver.get(url);
String getInputFocusId = "select2-input";
WebElement element = Driver.findElement(By.className(getInputFocusId);
element.click();
//element.sendKeys(Key.DOWN);
element.sendKeys(Key.ENTER);
String text = element.getText();
//this is the text of the first search match
//if you want to get the second or third just repeat sending the DOWN key.
}
ВАЖНО: убедитесь, что каждая строка запускается с задержкой (200 мс - хорошее время). Это помогает вам находить ошибки ... Например, в процессе аутентификации Instagram я задержал много строк, и, наконец, это сработало!
Надеюсь, мой ответ вам поможет !!!