【问题标题】:Cannot count/print all options listed under listbox using selenium Webdriver无法使用 selenium Webdriver 计算/打印列表框下列出的所有选项
【发布时间】:2017-02-15 06:03:52
【问题描述】:

我有这个sn-p。我正在尝试计算/打印country 列表框下列出的所有选项。

  <select id="country" class="text-box drop-down-list ng-pristine ng-not-empty ng-valid ng-valid-required ng-touched" ng-class="{'text-box-error': form.country.$touched && form.country.$invalid}" ng-options="country.name as country.name for country in countries" ng-model="mv.country" name="country" required="" style="">
    <option translate="CUSTOMER_SUPPORT_COUNTRY_SELECT" value="" selected="selected">Select One</option>
    <option label="Afghanistan" value="string:Afghanistan">Afghanistan</option>
    <option label="Aland Islands" value="string:Aland Islands">Aland Islands</option>
    <option label="Albania" value="string:Albania">Albania</option>
    <option label="Algeria" value="string:Algeria">Algeria</option>
    <option label="American Samoa" value="string:American Samoa">American Samoa</option>
    <option label="Andorra" value="string:Andorra">Andorra</option>
    <option label="Angola" value="string:Angola">Angola</option>
    <option label="Anguilla" value="string:Anguilla">Anguilla</option>
    <option label="Antarctica" value="string:Antarctica">Antarctica</option>
    <option label="Antigua and Barbuda" value="string:Antigua and Barbuda">Antigua and Barbuda</option>
    <option label="Argentina" value="string:Argentina">Argentina</option>

虽然列表框有很多,但我被算作“1”。

    WebElement X = driver.findElement(By.id("country"));
               Select s=new Select(X);
               List<WebElement> elementCount = s.getOptions();
               int itemSize = elementCount.size();`enter code here`
               System.out.println(itemSize);
                for(int i = 0; i < itemSize ; i++){
                    String optionsValue = elementCount.get(i).getText();
                    System.out.println(optionsValue);

【问题讨论】:

  • 您忘记关闭
  • 检查您是否有另一个带有id="country"的元素
  • @Darshan - 不,我只是复制了 HTML 的一部分,因为列表框列出了大约 40 个选项。
  • @Guy - 没有一个匹配节点 id="country"
  • 由于您在选择标签中使用了 ng-options,因此需要从 java 脚本加载选项。所以尝试在 Select s=new Select(X) 或 WebElement X 之前给一些等待时间。

标签: java eclipse selenium selenium-webdriver


【解决方案1】:

谢谢@guy,你的建议解决了我的问题。 我在 select 语句之后添加了等待语句 -thread.sleep() 并且它有效。

 WebElement X = driver.findElement(By.id("country"));
       Select s=new Select(X);
       List<WebElement> elementCount = s.getOptions();
       Thread.sleep(2000);
      int itemSize = elementCount.size();
      /*    System.out.println(itemSize);
        for(int i = 0; i < itemSize ; i++){
            String optionsValue = elementCount.get(i).getText();
            System.out.println(optionsValue);

【讨论】:

    【解决方案2】:

    当我们在 select 标签中使用 ng-options 时,需要从 java 脚本中加载选项。因此,将加载元素,但从 java 脚本加载选项需要一些时间。可以通过使用一些等待时间来避免。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-24
      • 1970-01-01
      • 2017-11-22
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多