【问题标题】:Not able to get text of all options present in dropdown无法获取下拉菜单中所有选项的文本
【发布时间】:2020-10-05 13:10:17
【问题描述】:

我正在尝试获取选择语言下拉菜单中所有选项的文本。

但我无法得到它们。

仅打印下拉列表中所有选项中的“英语(英国)”。其余所有语言都显示为空白。

下面是我的代码:

System.setProperty("webdriver.chrome.driver", "D:\1\chromedriver.exe");

    // Start browser
    WebDriver driver = new ChromeDriver();
    driver.manage().window().maximize();
    driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
    driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

    driver.get("https://accounts.google.com/ServiceLogin/identifier?elo=1&flowName=GlifWebSignIn&flowEntry=AddSession");

    driver.findElement(By.xpath("//div[@class = 'TquXA']")).click();

    List<WebElement> listOfLanguages = driver.findElements(By.xpath("//span[@class = 'vRMGwf oJeWuf']"));
    
    int size = listOfLanguages.size();
    
    for(int i = 0; i<size; i++) {
        
        WebElement ele = listOfLanguages.get(i);
        String value = ele.getText();
        System.out.println("languages are : "+value);
    }
    

    driver.quit();

【问题讨论】:

  • 我无法访问您在 driver.get 中输入的网址,请给我们一个独立于您的 Google 帐户的功能性网址,以便我们进一步为您提供帮助!

标签: selenium dropdown gettext


【解决方案1】:

在您检索文本时,语言下拉菜单可能不会立即加载。尝试显式等待条件,确保所有下拉元素在 DOM 中可见。

    WebDriverWait wait=new WebDriverWait(driver,20);
wait.until(ExpectedConditions.visibilityOfAllElementsLocated(By.xpath("//span[@class = 'vRMGwf oJeWuf']")));

如果在 20 秒内不可见,上面的代码会抛出 TimeOutException。

此外,无论何时打印文本,最好使用 foreach 循环来处理动态数量的元素。

另一种选择是使用 sleep ,它在点击后休眠 3 秒。 (不是最好的方法,虽然它会为你工作) 例如:Thread.sleep(3000);

【讨论】:

  • 您好 Arun,根据您的指导,我现在使用了 for-each 循环而不是常规循环,并且现在还使用了静态 Thread.sleep() 等待。我看到如果我等待 5 秒,我可以打印大约 35-40 种语言,而之前只有 1 种。但是,即使我将睡眠时间增加到 15 秒,我也无法在输出控制台中打印所有语言 (71)。
  • 我更新的代码:Thread.sleep(15000); List listOfLanguages = driver.findElements(By.xpath("//span[@class= 'vRMGwf oJeWuf']")); int size = listOfLanguages.size(); for (WebElement ele : listOfLanguages) { 字符串值 = ele.getText(); System.out.println("语言是:" + value); } driver.quit();
  • @DeepakVishwakarma 页面加载将默认由 selenium 处理。因此,除非您有真正的用例,否则无需设置页面加载超时。另外,将隐式等待时间增加到 30 秒并检查。
猜你喜欢
  • 2023-03-05
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2020-11-28
  • 2019-01-17
  • 2019-11-27
  • 2018-12-17
相关资源
最近更新 更多