【问题标题】:I'm not able to open "All" drop down from Amazon.ca page through selenium web driver using Java我无法使用 Java 通过 selenium Web 驱动程序从 Amazon.ca 页面打开“全部”下拉菜单
【发布时间】:2019-10-23 14:43:33
【问题描述】:
复制步骤:
- 打开亚马逊主页
- 请参阅页面左上方的“全部”下拉选项。
- 尝试点击它(通过 Selenium WebDriver 使用 Java)
代码:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.className("nav-search-scope nav-sprite"))).click();
WebElement element=driver.findElement(By.className("nav-search-scope nav-sprite"));
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.className("nav-search-scope nav-sprite"))).click();
WebElement element=driver.findElement(By.className("nav-search-scope nav-sprite"));
【问题讨论】:
标签:
javascript
java
selenium-webdriver
drop-down-menu
【解决方案1】:
希望对你有所帮助。
WebElement lelement=driver.findElement(By.className("nav-search-scope nav-sprite"));
Select oSelect = new Select(lelement);
java.util.List <WebElement> elementCount = oSelect.getOptions(); // get all options from your drop down
int iSize = elementCount.size();
String [] arrbtn= new String [iSize];
for (int j = 0; j < iSize; j++) {
arrbtn[j]=elementCount.get(j).getText();
if(arrbtn[j]=="All"){
oSelect .selectByVisibleText("All");
}
}
或者您可以使用以下方法选择“全部”选项。
public static void getDropdownAllOption(WebDriver driver,WebElement lelement)
{
Select oSelect = new Select(lelement);
java.util.List <WebElement> elementCount = oSelect.getOptions(); // get all options from your drop down
int iSize = elementCount.size();
String [] arrbtn= new String [iSize];
for (int j = 0; j < iSize; j++) {
arrbtn[j]=elementCount.get(j).getText();
if(arrbtn[j]=="All"){
oSelect .selectByVisibleText("All");
}
}
}
如果您需要通过可见文本选择下拉菜单,您可以使用以下方法:
public static void selectByVisible(WebElement lelement,String selectValue)
{
WebElement mySelect =lelement;
Select mySelectd= new Select(mySelect);
mySelectd .selectByVisibleText(selectValue);
}
【解决方案2】:
请试试这个
driver = new ChromeDriver();
driver.get("https://www.amazon.ca/");
WebDriverWait wait = new WebDriverWait(driver, 10);
driver.findElement(By.className("nav-search-scope")).click();
Select selects = new Select(driver.findElement(By.id("searchDropdownBox")));
selects.getOptions().forEach(e -> System.out.println(e.getText() + " is Displayed : " + e.isDisplayed()));
selects.getOptions().forEach(e -> System.out.println(e.getText() + " is Enabled : " + e.isEnabled()));
selects.getOptions().forEach(e -> System.out.println(e.getText() + " is Selected : " + e.isSelected()));
driver.quit();