为什么select方法在类别字段中不起作用?

时间:2016-05-11 04:09:12

标签: selenium selenium-webdriver

我的代码:

public class asdadsd {

public static void main(String[] args) throws InterruptedException {

    WebDriver driver = new FirefoxDriver();

    driver.manage().window().maximize();

    driver.get("http://talentrack.in");

    driver.findElement(By.xpath(".//*[@id='header']/div[2]/div[2]/div[2]/a/span")).click();

    WebDriverWait wait = new WebDriverWait(driver, 20);

    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='userlogin']/div/div[4]/a[1]")));

    driver.findElement(By.xpath(".//*[@id='userlogin']/div/div[4]/a[1]")).click();


    WebElement name = driver.findElement(By.xpath(".//*[@id='name']"));
    name.sendKeys("anyname");

    //WebDriverWait wait = new WebDriverWait(driver, 20);
      //wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("select[id='cat_id'][name='cat_id']")));

    Thread.sleep(5000L);

    //WebElement category = driver.findElement(By.cssSelector("select[id='cat_id'][name='cat_id']"));

    WebElement category = driver.findElement(By.cssSelector("#cat_id"));

    Select a =new Select(category);

    a.selectByValue("5");
}

}

类别下拉有什么问题?我可以填写其他下拉列表中的值。请帮我摆脱这个。

错误: 元素当前不可见,因此可能无法与之交互 命令持续时间或超时:13毫秒

我申请等待,但仍无法正常工作。

2 个答案:

答案 0 :(得分:1)

@Kishan,

在您的代码中,WebDriver无法选择下拉列表,因为它找到了与您的css选择器匹配的两个元素。 PFA截图。 CSS selector showing two nodes因此,如果您想使用css选择器,则可以使用:

#cat_id [class ='输入控制模式 - 标签选择占位符 - 颜色'] 而不是 #cat_id

WebElement category = driver.findElement(By.cssSelector("#cat_id[class='input-control modal-tab-selection placeholder-color']"));

Select a =new Select(category);

a.selectByValue("5");

我希望这会有所帮助。

答案 1 :(得分:0)

    WebElement category = driver.findElement(By.xpath(".//*[@id='cat_id'][@data-message='required']"));
    Select a =new Select(category);
    a.selectByValue("4");

最后我明白了......

这是帮助我唯一识别下拉列表的xpath。感谢Vaibhav的帮助。永远不要相信xpath,更好地创建自己的。哈哈.. 快乐学习。 : - )