java - 如何判断框架是否存在

标签 java selenium

在我的应用程序中,所有选项卡都是一个框架下的类别。我用过:

driver.switchTo().frame((WebElement) By.name("contents"));
System.out.println("Frame is selected");

验证框架是否存在,但出现以下异常:

>Exception in thread "main" java.lang.ClassCastException:      
    org.openqa.selenium.By$ByName cannot be cast to org.openqa.selenium.WebElement
    at selenium_test.iebrowser.main(iebrowser.java:75)

最佳答案

您的错误表明您正在尝试将 ByBy.name("contents") 转换为 WebElement your(WebElement) ...这当然是无意义的!

根据Selenium API , .switchTo().frame() 具有以下签名之一:

WebDriver frame(int index);
WebDriver frame(String nameOrId);
WebDriver frame(WebElement frameElement);

您需要的是以下之一:

driver.switchTo().frame("contents");  // uses the nameOrId
driver.switchTo().frame(driver.findElement(By.name("contents")));  // uses the frameElement

关于java - 如何判断框架是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29928221/

相关文章:

Java Spring IOC 构造函数参数注入(inject)一个 List<Integer>

java - 导入 org.jsoup.* 不起作用

java - WebDriver 未在 Cucumber 测试中实例化

java - 测量驻留在单独项目中的 Selenium 测试的代码覆盖率

java - 使用 JOOQ 在 "not in"子句中指定多个列进行删除

java - 如何为Cucumber-jvm快速创建测试数据库?

java - Selenium Web 驱动程序测试 Web 元素已更新

java - 身份验证弹出窗口进入后台 Selenium、Firefox

c# - 如何使用 Selenium c# 将剪贴板中的 url 粘贴到 Chrome 中的地址栏?

angularjs - Protractor 调试未启动,调试器监听端口 5858