2014-02-03 2 views
0
  • В настоящее время работает на Selenium WebDriver и используя Java. Если у меня выпадающее имя называется Продукт ..Как выбрать все параметры в раскрывающемся списке - Selenium Webdriver?

  • В этом падении у меня так много значений (например: 60). при выполнении кода я отменяю выбор всех параметров, тогда я выбрал, какой вариант я хочу, потому что по умолчанию все значения выбраны в HTML .. и он работает нормально.

  • Таким же образом, если я хочу выбрать все параметры в то же время .. Как я могу выполнить действие.

    <select id="productId" multiple="" style="width: 125px; display: none;" name="products[]"> 
    
    <option selected="" value="1020 ROUTER SERIES">1020 ROUTER SERIES</option> 
    
    <option selected="" value="1030 ROUTER SERIES">1030 ROUTER SERIES</option> 
    
    <option selected="" value="1040 ROUTER SERIES">1040 ROUTER SERIES</option> 
    
    <option selected="" value="1061 ROUTER">1061 ROUTER</option> 
    
    </select> 
    

и так далее ..

Вот пример кода:

Log.info("Clicking on Product dropdown"); 
JavascriptExecutor executor31 = (JavascriptExecutor)driver; 
executor31.executeScript("document.getElementById('ProductId').style.display='block';"); 
Select select31 = new Select(driver.findElement(By.id("ProductId"))); 
select31.deselectAll(); 
select31.selectByVisibleText("1222"); 
Thread.sleep(6000); 
JavascriptExecutor executor32 = (JavascriptExecutor)driver; 
executor32.executeScript("document.getElementById('ProductId').style.display='block';"); 
Select select32 = new Select(driver.findElement(By.id("ProductId"))); 
select32.selectByVisibleText("1020"); 
+0

Описание и нижняя линия вопрос крайне неясные –

+0

Если я хочу, чтобы выбрать несколько вариант из выпадающего I'am отменив все, и я выбрать параметры, что я хочу .. еще раз я хочу для всех вариантов, как я отменяю выбор. select.deselectAll(); такого рода метод. – Amirdha

+0

Извините; все еще крайне неясным. Можете ли вы добавить часть своего кода к вопросу? –

ответ

0

Вы не можете ничего подобного deselectAll использовать(). Однако вы можете перебирать каждую опцию и выбирать каждый раз. Попробуйте выполнить следующие условия:

List<WebElement> liOp = new Select(driver.findElement(By.id("YourLocator"))).getOptions(); 
for(WebElement eachElem:liOp){ 
    new Select(driver.findElement(By.id("yourLocator"))).selectByVisibleText(eachElem.getText()); 
} 

Посмотрите, поможет ли это. Для Control + A, попробуйте сделать следующее:

Actions builder = new Actions(driver); 
builder.sendKeys(Keys.chord(Keys.CONTROL,"a")).perform(); 
+0

Есть ли какой-либо другой способ через ** Ctrl + A **, чтобы выбрать все параметры одновременно для вышеуказанного тега HTML – Amirdha

+0

Прошу предложить мне какое-либо решение для сценария .. – Amirdha

+0

Я не знаю, как он будет работать для Select, но вы можете попробовать код выше для Ctrl + A. Вы даже можете добавить пробел в строитель, если вам нужно установить флажки. HTML-элементы помогут вам лучше, кроме того, почему они сгибаются при использовании ctrl + a, когда есть другой способ? – Husam

0

Мы получаем все варианты списка веб-элементов. Затем мы можем выполнить итерацию по этому списку, чтобы выбрать все параметры.

Select select31 = new Select(driver.findElement(By.id("ProductId"))); 
select31.deselectAll(); 

List<WebElement> select31Options = select31.getOptions(); 

for (WebElement option : select31Options) { 
    select31.selectByVisibleText(option.getText()); 
} 

Сообщите мне, если это вам поможет.

0

Предлагаю попробовать другое решение, ранее я использовал цикл, чтобы выбрать все элементы в раскрывающемся списке, но когда их число велико, это может занять очень много времени. То, что я пробовал, и это сработало, было:

element(By.id("dropdownId")).selectByIndex(0); 
element(By.id("dropdownId")).sendKeys(Keys.SHIFT, Keys.END); 

Я знаю, что это был год назад, но все же это может помочь кому-то.

0
  1. Сначала проверьте, поддерживает ли раскрывающийся список несколько вариантов.
  2. Если возможно , вы можете выбрать все варианты из в списке.
  3. Используйте цикл for для перебора всех элементов в списке и выберите их.

    Select selectElement = new Select(driver.findElement(By.Id("productId"))); 
    if (selectElement.isMultiple()) { /* step 1 */ 
        List<WebElement> options = selectElement.getOptions(); /* step 2 */ 
        for (WebElement we : options) { /* step 3 */ 
         we.selectByVisibleText(we.getText()); 
        } 
    } else { 
        // does not support multiple 
    } 
    
Смежные вопросы