Selenium - 单击切换元素

时间:2014-07-10 16:30:15

标签: java selenium xpath

我正在使用硒。

基本上我想点击以下元素来切换元素:

<div class="view-icon fadeIn" title="" data-placement="top" data-toggle="tooltip" data-original-title="Switch to List View">
<i class="fa fa-bars"></i>
</div>

更改为:

<div class="view-icon fadeIn" title="" data-placement="top" data-toggle="tooltip" data-original-title="Switch to Tab View">
<i class="fa fa-list-alt"></i>
</div>

之后我只想填写表格并测试其输出。

我为单击此元素而编写的方法:

public void clickAtListView() {
        WebElement listView = driver.findElement(By.xpath("//div[@class='view-icon fadeIn']"));
        listView.click();
    }

但是,我得到了:

Exception in thread "main" org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with
Command duration or timeout: 50 milliseconds

为什么我得到这个例外的任何建议?

感谢您的回答!

更新

在我看来,当我把Thread.sleep(10000);放在前面时,列表元素会显示出来:

然而,我仍然得到例外;(

2 个答案:

答案 0 :(得分:2)

正如您发送的异常所述,该元素无法采取任何行动。

因此,您的代码

WebElement listView = driver.findElement(By.xpath("//div[@class='view-icon fadeIn']"));

获取隐藏元素(例如,#34;查看选项卡&#34;元素)。请试试这个

WebElement listView = driver.findElement(By.xpath("//div[@data-original-title='Switch to List View']"));

答案 1 :(得分:0)

看起来您只需要为XPath添加一条额外的路径:

driver.findElement(By.xpath("//div/[@class='view-icon fadeIn']/i"));

此外,您可以使用上面的选择器,例如切换视图,而不是为选项卡视图和列表视图定义单独的元素。