如何使用 Selenium 在 Frames/IFrames 和子帧上行走
How to walk on Frames/IFrames and Subframes with Selenium
我正在使用 selenium 进行自动化测试,在框架和 iframe 上行走时遇到了一些问题。
我有这个设置
<iframe id="1">
<iframe id="2">
<frame id="3">
<a id="4">
我希望用 selenium 走完这条路,直到我到达 id="4"。
我的测试是:
new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("1"));
new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("2"));
new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("3"));
和
driver.switchTo().frame("1");
driver.switchTo().frame("2");
driver.switchTo().frame("3");
问题是,它没有传递到第 2 帧(在这两种情况下),它进入了第一个帧,但找不到第 2 帧。
有什么不同的方法吗? iframe 似乎与 frame 和 selenium 不同,但我如何使用两者?
感谢您的宝贵时间!
编辑: 找到更多信息,请查看。仍然需要访问相同的 divs、1、2、3 和 4,但是我需要访问的 iframe(2) 在 div.
中
<iframe id="1">
<iframe id="anotherframe"></iframe>
<iframe id="anotherframe1"></iframe>
<div id="outside>
<iframe id="2">
<frame id="3">
<a id="4">
</frame>
</iframe>
</div>
<iframe id="anotherframe2"></iframe>
</iframe>
抱歉,代码太多哈哈
谢谢!
编辑:
经过大约 90 次测试后,我让它正常工作,主要问题不是 Selenium 命令,而是页面本身,它动态加载并且具有随机 ID。
我只需要用一个 thread.sleep(30000);等这么长的时间让它出现,之后它走路就很迷人了。
非常感谢您的帮助,您的评论让我对如何使用它有了新的想法=)
经过大约 90 次测试后,我让它正常工作,主要问题不是 Selenium 命令,而是页面本身,它动态加载并且具有随机 ID。
我只需要用一个 thread.sleep(30000);等了这么久才出现,之后走路就神采奕奕了
最佳选择:
new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("1"));
new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("2"));
new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("3"));
非常感谢您的帮助,您的评论让我对如何使用它有了新的想法=)
我正在使用 selenium 进行自动化测试,在框架和 iframe 上行走时遇到了一些问题。
我有这个设置
<iframe id="1">
<iframe id="2">
<frame id="3">
<a id="4">
我希望用 selenium 走完这条路,直到我到达 id="4"。
我的测试是:
new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("1"));
new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("2"));
new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("3"));
和
driver.switchTo().frame("1");
driver.switchTo().frame("2");
driver.switchTo().frame("3");
问题是,它没有传递到第 2 帧(在这两种情况下),它进入了第一个帧,但找不到第 2 帧。
有什么不同的方法吗? iframe 似乎与 frame 和 selenium 不同,但我如何使用两者?
感谢您的宝贵时间!
编辑: 找到更多信息,请查看。仍然需要访问相同的 divs、1、2、3 和 4,但是我需要访问的 iframe(2) 在 div.
中<iframe id="1">
<iframe id="anotherframe"></iframe>
<iframe id="anotherframe1"></iframe>
<div id="outside>
<iframe id="2">
<frame id="3">
<a id="4">
</frame>
</iframe>
</div>
<iframe id="anotherframe2"></iframe>
</iframe>
抱歉,代码太多哈哈
谢谢!
编辑:
经过大约 90 次测试后,我让它正常工作,主要问题不是 Selenium 命令,而是页面本身,它动态加载并且具有随机 ID。
我只需要用一个 thread.sleep(30000);等这么长的时间让它出现,之后它走路就很迷人了。
非常感谢您的帮助,您的评论让我对如何使用它有了新的想法=)
经过大约 90 次测试后,我让它正常工作,主要问题不是 Selenium 命令,而是页面本身,它动态加载并且具有随机 ID。
我只需要用一个 thread.sleep(30000);等了这么久才出现,之后走路就神采奕奕了
最佳选择:
new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("1"));
new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("2"));
new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("3"));
非常感谢您的帮助,您的评论让我对如何使用它有了新的想法=)