如何从下拉列表中单击选项,如果元素未存储在数组中

时间:2018-05-23 11:30:21

标签: java selenium selenium-webdriver

当我点击inspect元素时,下面是我的代码:

<select _ngcontent-c2="" class="form-control ng-pristine ng-invalid ng-touched" id="type" name="Type" required="">
     <option _ngcontent-c2="" disabled="" value="0: null">Type</option>
     <!----><option _ngcontent-c2="" value="1: account">
       account
     </option><option _ngcontent-c2="" value="2: booking">
       booking
     </option>
</select>

我想点击选项“1”,即account,下面是我尝试过的代码:

List <WebElement> Type= driver.findElements(By.id("type"));
Type.get(1).click();

但我的脚本没有点击我要点击的元素。有人可以帮助我吗?

4 个答案:

答案 0 :(得分:1)

您可以使用下面给出的选择类。

Select sel = new Select(driver.findElements(By.id("type")));
sel.selectByVisibleText("account");

答案 1 :(得分:0)

试试这段代码:

List<WebElement> dropDown =   driver.findElements(By.id("type"));

for(WebElement dd : dropDown ){
           if(dd.getText().contains("account")){
                dd.click();
             }
         }  

我不知道为什么你没有尝试过在Selenium中出现的选择类。对于那样的事情:

Select select = new Select(driver.findElement(By.id("type")));
select.selectByVisibleText("account");  
//OR
//select .selectByIndex(1);  
//OR  
//select .selectByValue("1");

答案 2 :(得分:0)

由于它是下拉列表,因此最好使用选择

请尝试以下代码并导入正确的库。图书馆也在下面提到,

import org.openqa.selenium.support.ui.Select;

代码,

String value = "account";
Select select = new Select(driver.findElement(By.xpath("//*[@id='type']")));
select.selectByVisibleText(value);

答案 3 :(得分:0)

直接你可以把这个代码写到帐户

import org.openqa.selenium.Keys
driver.findElement(By.id("type")).send_keys("account");