String[] arr = {"Month","Jan","Feb","Mar", "Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
WebElement dropDown = getDriver().findElement(By.id("month"));
Select select = new Select(dropDown);
List<WebElement> options = select.getOptions();
for(WebElement we : options){
for(int i = 1; i<arr.length; i++){
if(we.getText().equals(arr[i])){
System.out.println("Matched" );
break;
}
}
}
我想通过在Java中使用Selenium在Facebook下拉菜单上找到重复的月份。
我尝试了findelement,web元素,但我无法做到这一点。马上;我可以将月份与网页相匹配。原始问题是这样的:查找月份下拉列表是否包含任何重复项。如果是,则打印出重复的值。谢谢
由于您的用例是使用Selenium和Java在Facebook下拉列表中查找重复的月份,因此您实际上不需要引用数组。要查找月份下拉列表是否包含任何重复项并打印出重复的值,您可以使用以下解决方案:
-
此代码块从 Facebook 的下拉列表中提取月份列表:
System.setProperty("webdriver.chrome.driver", "C:\Utility\BrowserDrivers\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://www.facebook.com"); WebElement dropDown = driver.findElement(By.id("month")); Select select = new Select(dropDown); List<WebElement> options = select.getOptions(); ArrayList<String> months = new ArrayList<>(); for(WebElement we : options) months.add(we.getText()); System.out.println("Current list of months: " +months);
-
为了通过此代码块进行演示,我们将添加 3 个重复条目:
months.add("Month"); months.add("Feb"); months.add("Dec");
-
在这个代码块中,我们创建了一个函数来返回重复的月份:
public static Set<String> findDuplicates(List<String> listContainingDuplicates) { final Set<String> setToReturn = new HashSet<>(); final Set<String> set1 = new HashSet<>(); for (String myString : listContainingDuplicates) { if (!set1.add(myString)) setToReturn.add(myString); } System.out.println("Unique months: " +set1); return setToReturn; }
-
现在,您可以按如下方式调用该函数
findDuplicates()
:System.out.println("Duplicated months: " +findDuplicates(months));
-
因此,完整的解决方案将是:
package Duplicates; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.support.ui.Select; public class Find_Duplicates_In_List { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "C:\Utility\BrowserDrivers\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://www.facebook.com"); WebElement dropDown = driver.findElement(By.id("month")); Select select = new Select(dropDown); List<WebElement> options = select.getOptions(); ArrayList<String> months = new ArrayList<>(); for(WebElement we : options) months.add(we.getText()); System.out.println("Current list of months: " +months); months.add("Month"); months.add("Feb"); months.add("Dec"); System.out.println("Duplicated months: " +findDuplicates(months)); } public static Set<String> findDuplicates(List<String> listContainingDuplicates) { final Set<String> setToReturn = new HashSet<>(); final Set<String> set1 = new HashSet<>(); for (String myString : listContainingDuplicates) { if (!set1.add(myString)) setToReturn.add(myString); } System.out.println("Unique months: " +set1); return setToReturn; } }
-
控制台输出:
Current list of months: [Month, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sept, Oct, Nov, Dec] Unique months: [Jul, Oct, Feb, Apr, Jun, Dec, May, Month, Sept, Aug, Nov, Jan, Mar] Duplicated months: [Month, Feb, Dec]