Selenium 无法获取下拉列表中所有选项的文本

Selenium 无法获取下拉列表中所有选项的文本,selenium,dropdown,gettext,Selenium,Dropdown,Gettext,我正在尝试获取“选择语言”下拉列表中所有选项的文本 但是我没有办法得到它们 仅限“‪下拉列表中所有选项中的“英语(英国)”正在打印。Rest所有语言均显示为空白。 下面是我的代码: System.setProperty(“webdriver.chrome.driver”,“D:\1\chromedriver.exe”) //启动浏览器 WebDriver驱动程序=新的ChromeDriver(); driver.manage().window().maximize(); driver.manag

我正在尝试获取“选择语言”下拉列表中所有选项的文本

但是我没有办法得到它们

仅限“‪下拉列表中所有选项中的“英语(英国)”正在打印。Rest所有语言均显示为空白。

下面是我的代码:

System.setProperty(“webdriver.chrome.driver”,“D:\1\chromedriver.exe”)

//启动浏览器
WebDriver驱动程序=新的ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeout().pageLoadTimeout(30,TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(15,TimeUnit.SECONDS);
驱动程序。获取(“https://accounts.google.com/ServiceLogin/identifier?elo=1&flowName=GlifWebSignIn&flowEntry=AddSession");
findElement(By.xpath(“//div[@class='TquXA']”)。单击();
List listOfLanguages=driver.findElements(By.xpath(“//span[@class='vRMGwf-oJeWuf']);
int size=listOfLanguages.size();

对于(int i=0;i而言,检索文本时可能不会立即加载语言下拉列表。请尝试使用明确的条件,以确保所有下拉列表元素在DOM中可见

    WebDriverWait wait=new WebDriverWait(driver,20);
wait.until(ExpectedConditions.visibilityOfAllElementsLocated(By.xpath("//span[@class = 'vRMGwf oJeWuf']")));
如果在20秒内不可见,上述代码将抛出TimeOutException

此外,在打印文本时,最好使用foreach循环来获取动态数量的元素

另一个选择是使用睡眠,在点击后睡眠3秒钟。(这不是最好的方法,尽管它对你有用)
例如:
Thread.sleep(3000);

我无法访问您在driver.get中输入的URL,请给我们一个独立于您的Google帐户的功能URL,以便我们可以进一步帮助您!您好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){String value=ele.getText();System.out.println(“语言为:“+value”);}driver.quit();@DeepakVishwakarma Pageload在默认情况下由selenium处理。因此,除非您有真正的用例,否则无需设置页面加载超时。此外,请将implicitwait时间增加到30秒并检查。
    WebDriverWait wait=new WebDriverWait(driver,20);
wait.until(ExpectedConditions.visibilityOfAllElementsLocated(By.xpath("//span[@class = 'vRMGwf oJeWuf']")));