【问题标题】:how select dropdown list value in selenium如何在硒中选择下拉列表值
【发布时间】:2017-10-09 09:11:06
【问题描述】:

我有两个下拉框。我从第一个下拉列表中选择了项目,但无法从第二个下拉框中选择值。我用过chrome驱动。

这是我的代码。

    public static  void main(String[] args) throws InterruptedException 
    {
       System.setProperty("webdriver.chrome.driver","D:\\chromedriver.exe");
       WebDriver  driver =new ChromeDriver();
       driver.get("http://localhost/ProtoD/Login.aspx");
       driver.manage().window().maximize();

        driver.findElement(By.id("cmbBranch_Arrow")).click();
        Thread.sleep(4000);

        List<WebElement> drops=driver.findElements(By.tagName("li"));
        System.out.println(drops.size());

        for(WebElement  obj:drops){
          System.out.println(obj.getText());
          if(obj.getText().equalsIgnoreCase("Head Office")) 
          {
             obj.click();
             break;
          }     
        }

       driver.findElement(By.id("cmbFinYear_Arrow")).click();
       Thread.sleep(4000);
        List<WebElement> drops1=driver.findElements(By.tagName("li"));
                 System.out.println(drops1.size());

        for(WebElement  obj1:drops1)
        {

        System.out.println(obj1.getText());
         if(obj1.getText().equalsIgnoreCase("01-Apr-2015--31-Mar-2016"))    
          {
              obj1.click();
             break;
          }  

我收到如下错误:-

未知错误:元素在点 (847, 271) 处不可点击

我的 HTML 代码:-

<input id="cmbFinYear_ClientState" name="cmbFinYear_ClientState" type="hidden" autocomplete="off" value="{&quot;logEntries&quot;:[],&quot;value&quot;:-2147483644,&quot;text&quot;‌​:&quot;01-Apr-2015--31-Mar-2016&quot;,&quot;enabled&quot;:true}">

【问题讨论】:

  • 我只选择了一个下拉列表,但无法选择另一个下拉列表
  • 试着准确地解释你想要做什么以及问题是什么
  • 确保您的另一个下拉菜单没有因为当前下拉菜单而隐藏,它应该是可见的。
  • 我有 2 个下拉列表,我可以选择唯一的第一个下拉列表。并为第二个下拉列表使用相同的代码,但代码没有运行。然后告诉我该怎么做?
  • 您有错误或异常吗?

标签: java selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

变量“选项”在您的代码中声明的位置在哪里?看起来您需要使用 obj1 更改选项,并更好地添加 EqualsIgnoreCase,如下面的 sn-p:

for(WebElement  obj1:drops1)
{    
System.out.println(obj1.getText());
       if("01-Apr-2015--31-Mar-2016".equalsIgnoreCase(obj1.getText()))
option.click();
}

【讨论】:

    【解决方案2】:

    使用以下代码进行点击:

    JavascriptExecutor executor = (JavascriptExecutor) driver;
    executor.executeScript("arguments[0].click();", obj1);
    

    你可以试试下面的代码:

    driver.findElement(By.id("cmbFinYear_Arrow")).click();
    Thread.sleep(4000);
    List < WebElement > drops1 = driver.findElements(By.tagName("li"));
    System.out.println(drops1.size());
    for (WebElement obj1: drops1) {
    
    System.out.println(obj1.getText());
    if (obj1.getText().equalsIgnoreCase("01-Apr-2015--31-Mar-2016")) {
       JavascriptExecutor executor = (JavascriptExecutor) driver;
        executor.executeScript("arguments[0].click();", obj1);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多