Выберите элемент из раскрывающегося списка по видимому тексту с помощью исполнителя javascript

Я использую селен с Tor и хочу выбрать элемент из выпадающего списка по видимому тексту или по части текста. Класс Select не работает из-за ошибки в firefox

Итак, это мой код:

Select dropdown = new Select(driver.findElement(By.id("serverLogin"))); //Selects my dropdown
dropdown.selectByVisibleText(server);   //Selects the server

Как я могу сделать это с помощью исполнителя javascript?


person Davide Melis    schedule 03.09.2017    source источник
comment
Является ли сервер ценностью? Если да, то оно должно быть в двойных кавычках.   -  person Kapil    schedule 03.09.2017
comment
server представляет собой переменный строковый тип. общедоступный сервер String = blablabla;   -  person Davide Melis    schedule 03.09.2017
comment
какую ошибку вы получаете?   -  person Kapil    schedule 03.09.2017
comment
Он не выбирает ни один элемент. stackoverflow.com/a/39046884/8142148 вот почему   -  person Davide Melis    schedule 03.09.2017
comment
Вы проверили 2-й комментарий в ссылке, которую вы предоставили?   -  person Kapil    schedule 03.09.2017
comment
Да, но я не понимаю c#, я программирую на Java   -  person Davide Melis    schedule 03.09.2017


Ответы (2)


Давайте попробуем с приведенным ниже кодом и посмотрим, работает ли он.

WebElement dropDownListBox = driver.findElement(By.id("serverLogin"));
((JavascriptExecutor)driver).executeScript("var select = arguments[0]; for(var i = 0; i < select.options.length; i++){ if(select.options[i].text == arguments[1]){ select.options[i].selected = true; } }", dropDownListBox, "blablabla");
person Kapil    schedule 03.09.2017
comment
Все еще ничего ... он открывает список параметров раскрывающегося списка, но никого не выбирает, а затем закрывает раскрывающийся список, оставляя всегда выбранным первый вариант - person Davide Melis; 03.09.2017
comment
какую версию firefox вы используете? - person Kapil; 03.09.2017
comment
Я использую последнюю версию Tor, используя код, который я нашел здесь stackoverflow.com/a/23320554/8142148 Это работает все отлично кроме выпадающих списков - person Davide Melis; 03.09.2017
comment
можете ли вы вставить DOM и еще немного вашего точного кода? - person Kapil; 03.09.2017
comment
Это вывод I Get: 1504442314198 Marionette Info StartBrowser 613D1F95-3368-435E-87BE-020AA90850FB 1504442314219 Marionette Info SENDASYNC 613D1F95-3368-435E-87BE-020AA90850FB Набор 03, 2017 2:38:34 org.Openqa.selenium.remote .ProtocolHandshake CreateSession Informazioni: Обнаружен диалекта: W3C Пароль Attuale: 1234aa 1504442315212 марионеток INFO SendAsync 613d1f95-3368-435e-87be-020aa90850fb 1504442345032 марионеток INFO SendAsync 613d1f95-3368-435e-87be-020aa90850fb 1504442345064 марионеток INFO SendAsync 613d1f95-3368-435e-87be -020aa90850fb Обратите внимание, что это работает на Chrome - person Davide Melis; 03.09.2017

Я решил создать раскрывающийся список WebElement и отправить ему первую букву, чтобы выбрать мой вариант, а затем отправить клавишу Enter. Вот код:

WebElement dropdown = driver.findElement(By.id("serverLogin")); 
        dropdown.sendKeys(server);  
        dropdown.sendKeys(Keys.ENTER);

Спасибо, в любом случае.

person Davide Melis    schedule 03.09.2017
comment
на самом деле не работает, даже потому, что вы не можете объявить Webelement dropdown в javascript - person Don Diego; 29.12.2020