Selenium WebDriver - 无法从下拉列表中选择值,元素不可见

时间:2015-03-29 06:03:18

标签: java selenium selenium-webdriver webdriver

这是我的代码段。

未从下拉列表中选择元素,因为元素不可见而导致错误,因此网络驱动程序无法进行交互

package pac.PraticeSeleniumProgramsWebDriver;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

public class WorkingWithSelectBoxInWebDriver {

    public static void main(String[] args) {

        System.setProperty("webdriver.firefox.bin","C:\\Users\\A081368\\AppData\\Local\\Mozilla Firefox\\firefox.exe");
        WebDriver Driver = new FirefoxDriver();
        Driver.get("https://login.yahoo.com/");

        timeout(Driver);
        Driver.findElement(By.xpath("//span[contains(text(),'Create Account')]")).click();
        timeout(Driver);
        Driver.findElement(By.xpath("//input[@id='first-name']")).sendKeys("Satish");
        Driver.findElement(By.xpath("//input[@id='last-name']")).sendKeys("Ranjan");
        Driver.findElement(By.xpath("//input[@id='user-name']")).sendKeys("satishranjanbit");
        Driver.findElement(By.xpath("//input[@id='password']")).sendKeys("shalini1");

        WebElement element = Driver.findElement(By.xpath("//select [@id='country-code']"));
        System.out.println("pass");

        Select Dropdown = new Select(element);
        System.out.println("pass1");

        Dropdown.selectByIndex(10);
        System.out.println("pass2");


        Driver.findElement(By.xpath("//input[@id='mobile']")).sendKeys("08105002231");
        System.out.println("pass3");

        Driver.close();
        Driver.quit();

    }

    public static void timeout(WebDriver Driver) {
        Driver.manage().timeouts().implicitlyWait(2, TimeUnit.MINUTES);
    }
}

2 个答案:

答案 0 :(得分:0)

包含select的{​​{1}}元素确实不可见,请参阅id="country-code"

display: none;

相反,您需要点击<select aria-invalid="false" id="country-code" name="mobileCountryCode" data="country-code-drop-down" corresponding-field-id="mobile" style="display: none;">...</select> 元素div

id="selected-country-code-1"

这会打开下拉列表。然后,选择一个选项:

WebElement dropdown = Driver.findElement(By.id("selected-country-code-1"));
dropdown.click();

这会从下拉列表中选择WebElement options = Driver.findElement(By.id("country-codes-menu-1")); options.findElement(By.partialLinkText("Antarctica")).click(); 国家/地区代码(假设这是您计划从下拉菜单中选择的内容)。

答案 1 :(得分:0)

如果您无法从下拉列表中选择值,则错误为“元素不可见”。 那么你不应该使用select类方法。首先你需要点击下拉div标签,意味着你需要从下拉列表中启用选项来选择值。

 WebElement dropdown= Driver.findElement(By.cssSelector("div"));
dropdown.click();
WebElement dropdownValue= Driver.findElement(By.cssSelector("dropdown value"));
dropdownValue.click();