我正在使用硒。
基本上我想点击以下元素来切换元素:
<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);
放在前面时,列表元素会显示出来:
然而,我仍然得到例外;(
答案 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"));
此外,您可以使用上面的选择器,例如切换视图,而不是为选项卡视图和列表视图定义单独的元素。