我试图单击列表中的第一个元素,但是编译器每次都会引发异常

时间:2019-07-11 07:24:26

标签: java selenium selenium-webdriver

我需要单击列表中的第一个元素。

我还尝试在单击之前对元素进行类型转换,但是它也会引发异常。

wait = new WebDriverWait(driver,60);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(ClientUICommon.getClientUIPaths().getProperty("BugFRList"))));
System.out.println("Bug to be clicked ");
ClientUICommon.sleep(3000);
((WebElement) driver.findElements(By.cssSelector(ClientUICommon.getClientUIPaths().getProperty("BugFRList")))).click();

1 个答案:

答案 0 :(得分:1)

问题出在以下代码中:

((WebElement) driver.findElements(By.cssSelector(ClientUICommon.getClientUIPaths().getProperty("BugFRList")))).click();

您看到,方法findElements不返回WebElement对象。它返回WebElement列表。 List<WebElement>准确。

您基本上要做的是单击列表,而不是元素:

driver.findElements(...).click();

这将引发编译错误,因为List<>没有方法click()。为了单击列表的第一个元素,您应该使用带有索引参数的get方法,如下所示:

list.get(0);

以上内容将返回单个WebElement

完整代码:

List<WebElement> elementList = driver.findElements(By.cssSelector(ClientUICommon.getClientUIPaths().getProperty("BugFRList"))));
WebElement firstElement = elementList.get(0);
firstElement.click();