Selenium/WebDriver switch_to parent_frame/default_content re



我有以下代码,这是一个基于Angular的网站。

我有,Python 3.6/Selenium/ChromeDriver v-77。我使用了switch_to方法直到iframe,id=f2.2,并消除了在该帧中打开的警报。然后我尝试了switch_to.parent_frame((和switch_to.default_content((。但两者都返回None。

<html>
<head>
</head>
<body>
<iframe id="f1"><iframe>      // 1
<iframe id="f2">              // 2
<iframe id="f2.1">              // 2.1
<iframe id="f2.2">        // 2.2
<a href='http://link.com'>
// on click alert, dismiss
</iframe>
<div id='ac'></div>
</iframe>
</iframe>
</body
</html>

我想要:

步骤1:进入iframe[id='f2.2']//我到达

步骤2:从iframe[id='f2.2']获取数据,并在点击该帧中的按钮后解除警报(ajax请求(

当我解除/接受警报时,Dom内容会在iframe[id='f2.1',id='f2.2']中更新

步骤3:我想从div[id='ac']获取更新的数据

我使用了等待,但无法获取数据。我还尝试保存window_handles[0]方法的响应,并在警报操作后使用,但它也不起作用。

有多种方法可以在帧之间切换

按索引切换到帧:

driver.switchTo().frame(0);
driver.switchTo().frame(1);

按名称或ID:切换到帧

driver.switchTo().frame("iframe1");
driver.switchTo().frame("id of the element");

请尝试解决方案:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("http://somedomain/url_that_delays_loading")
try:
driver.switchTo().defaultContent();
driver.switchTo().frame(driver.findElement(By.id("f2")).findElement(By.id("f2.1")).findElement(By.id("f2.2")));
wait = WebDriverWait(driver, 10)
driver.find_element_by_link_text("http://link.com'").click()
alert = driver.switch_to.alert
alert_text = alert.text
alert.dismiss()
driver.switch_to.default_content()
driver.switchTo().frame(driver.findElement(By.id("f2")).findElement(By.id("f2.1")));
String text=driver.findElement(By.id("ac")).getText();
System.out.println(text);
driver.switch_to.default_content()
finally:
driver.quit()

相关内容

  • 没有找到相关文章

最新更新