我有多个嵌套框架,我需要访问这些框架下的元素。由于这些框架是动态的,我无法访问这些元素。
我是否可以在不使用的情况下访问元素driver.switchTo().frame()
?
喜欢直接使用 xpath 或 jquery、javascript 或其他什么?
有任何建议欢迎提出
简单来说,
No,如果不切换到预期的位置,就不可能访问元素<iframe>
即不使用driver.switchTo().frame()
要切换到预期的框架,您必须使用以下任一方法:
-
切换通过框架名称:
driver.switchTo().frame("frame_name");
-
切换通过Frame ID:
driver.switchTo().frame("frame_id");
-
切换通过帧索引:
driver.switchTo().frame(1);
-
切换通过网页元素:
driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@attribute='value']")));
-
切换到父框架:
driver.switchTo().parentFrame();
-
切换到默认内容:
driver.switchTo().defaultContent();
但根据最佳实践你应该总是诱导WebDriver等待为了想要的框架可用并切换到它如下:
-
切换通过框架名称:
new WebDriverWait(driver, 20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.name("frame_name")));
-
切换通过Frame ID:
new WebDriverWait(driver, 20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id("frame_id")));
-
切换通过框架CSS选择器:
new WebDriverWait(driver, 20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("frame_cssSelector")));
-
切换通过框架xpath:
new WebDriverWait(driver, 20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("frame_xpath")));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)