java - 如果没有名称或 ID,如何使用 java selenium 选择 iframe
问题描述
我正在尝试iframe
在 selenium java 中选择一个,但该元素没有 Name 或 Id 属性。我应该如何得到它?(我想用switchTo
切换到它)
我试图获取的网站iframe
是jklm.fun
和的xpathiframe
"/html/body/div[2]/div[4]/div[1]/iframe"
(你需要在游戏中iframe
才能存在)
解决方案
我不建议使用绝对 xpath :
/html/body/div[2]/div[4]/div[1]/iframe
而是有一个相对的xpath。
话虽如此,就切换而言,有多种方式:
- 使用
driver.switchTo()
这基本上提供了 3 个重载方法:-
带索引:-
driver.switchTo().frame(index)
姓名或身份证:-
driver.switchTo().frame(nameOrId)
带有网页元素
driver.switchTo().frame(frameElement)
因此,在这 3 个中,我们可以轻松使用其中的 2 个,因为 id 或 name 在您的情况下不可用。
使用索引:
driver.switchTo().frame("here pass the index if you know. ")
使用框架 web 元素:
driver.switchTo().frame(driver.findElement(By.xpath("/html/body/div[2]/div[4]/div[1]/iframe")))
这应该适合你。
我们的另一种方法是使用显式等待:
new WebDriverWait(driver, 20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("/html/body/div[2]/div[4]/div[1]/iframe")));
这个比较方便,可以切换到iframe in angular
orreact based Application.
推荐阅读
- eclipse-plugin - 获取悬停的 Xtext 元素
- html - AMP-CAROUSEL 标记中缺少强制属性“灯箱”
- java - Java 的正则表达式
- javascript - gauge.js -> 需要在 javascript 上修改 PercentageColors 函数
- python - 使用 pipenv 安装时如何忽略特定包的依赖关系?
- c# - 用 ReactiveUI 依次执行一组命令
- python - 拦截窗口关闭
- javascript - 通过按下按钮获取持久的动作
- angularjs - 使用 ng-class 和 ng-repeat 的单元格特定表格样式
- kubernetes - 在 Kubernetes 集群之间共享 nfs 卷