SeleniumWebDriver w/Java:使用一个命令定位具有多个类名的元素

SeleniumWebDriver w/Java:使用一个命令定位具有多个类名的元素,java,selenium-webdriver,Java,Selenium Webdriver,我试图使用Selenium(2.31.0,使用JavaSE1.6和IE9)在页面上查找一系列元素。这些元素都有两个类名“dataLabel”或“dataLabelWide”中的一个。目前,我的代码在两个单独的ArrayList中收集这些元素,每个类名一个,然后将它们转换为数组,并将它们组合成一个数组。然而,这个方法列出了无序的元素,我需要它们保持与页面HTML源代码中的顺序相同的顺序 我的代码的上述部分如下所示(添加注释进行解释): //应用程序在WebDriver d(InternetExpl

我试图使用Selenium(2.31.0,使用JavaSE1.6和IE9)在页面上查找一系列元素。这些元素都有两个类名“dataLabel”或“dataLabelWide”中的一个。目前,我的代码在两个单独的ArrayList中收集这些元素,每个类名一个,然后将它们转换为数组,并将它们组合成一个数组。然而,这个方法列出了无序的元素,我需要它们保持与页面HTML源代码中的顺序相同的顺序

我的代码的上述部分如下所示(添加注释进行解释):

//应用程序在WebDriver d(InternetExplorerDriver)上运行。
//导航到相关页面后。。。
列表标签=d.findElements(按.className(“dataLabel”);
列表wLabels=d.findElements(By.className(“dataLabelWide”);
//通过各自的类名查找任一类型的元素。
WebElement[]labelsArray=labels.toArray(新WebElement[labels.size()]);
WebElement[]wLabelsArray=wLabels.toArray(新WebElement[wLabels.size()]);
//将每个ArrayList转换为一个数组。
List allLabels=new ArrayList();
//创建一个ArrayList以保存两个数组中的所有元素。
对于(int a=0;a

我认为最有效的解决方案是定位具有任意一个类名的元素,以便它们立即包含在单个列表/数组中。我自己做了一些搜索,但我还没有找到任何关于如何管理这项任务的结论性想法。如果有办法,请告诉我。

为什么不做以下事情:

driver.findElement(By.cssSelector(".dataLabel,.dataLabelWide");

“.”选择器说,“给我这个类的所有元素,“.”运算符是CSS选择器“或”运算符

谢谢你对我的问题的快速回答。不幸的是,我对Selenium非常陌生,所以我不熟悉所有定位元素的方法。我感谢您对选择器和运算符的解释,否则我可能无法理解这些细节。我将尝试一下这个例子,并报告结果。这个例子确实解决了我的问题。非常感谢你的帮助,非常干净。我喜欢它
driver.findElement(By.cssSelector(".dataLabel,.dataLabelWide");