WebDriver' 对象没有属性 'switch_to_frame'
WebDriver' object has no attribute 'switch_to_frame'
我无法切换到成功识别的 iFrame。该脚本识别 iFrame(已在调试器中检查),但切换到 iFrame 失败并进入异常陷阱。几次之前它运行良好。
Message='WebDriver' object has no attribute 'switch_to_frame'
这期间发生了什么?
Chromedriver 已从版本 95.0.4638.17 更新到 ChromeDriver 96.0.4664.45
Chromedriver 是否不再兼容最新的 Selenium 版本?
...
driver.switch_to.default_content()
try:
# find the frame
wait.until(EC.element_to_be_clickable((By.ID, "wysiwygTextarea_ifr")))
frame2 = driver.find_element(By.XPATH, "//iframe[@id='wysiwygTextarea_ifr']");
# switch to frame
driver.switch_to.frame(frame2.tag_name);
print("--------------iframe found-------------------");
except:
print("--------------iframe not found-------------------");
...
切换到帧时,支持的表示法是:
切换到使用框架名称的框架:
driver.switch_to.frame('frame_name')
切换到使用帧索引的帧:
driver.switch_to.frame(1)
切换到使用框架元素的框架:
driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])
-
切换到父框架:
driver.switch_to.parent_frame()
切换到默认内容:
driver.switch_to.default_content()
这个用例
要切换您使用过的框架:
driver.switch_to.frame(frame2.tag_name);
即不支持的TAG_NAME
。因此您会看到错误:
Message='WebDriver' object has no attribute 'switch_to_frame'
解决方案
您可以使用下面这行代码:
# find the frame
wait.until(EC.element_to_be_clickable((By.ID, "wysiwygTextarea_ifr")))
frame2 = driver.find_element(By.XPATH, "//iframe[@id='wysiwygTextarea_ifr']");
# switch to frame by frame element
driver.switch_to.frame(frame2);
我无法切换到成功识别的 iFrame。该脚本识别 iFrame(已在调试器中检查),但切换到 iFrame 失败并进入异常陷阱。几次之前它运行良好。
Message='WebDriver' object has no attribute 'switch_to_frame'
这期间发生了什么?
Chromedriver 已从版本 95.0.4638.17 更新到 ChromeDriver 96.0.4664.45
Chromedriver 是否不再兼容最新的 Selenium 版本?
... driver.switch_to.default_content() try: # find the frame wait.until(EC.element_to_be_clickable((By.ID, "wysiwygTextarea_ifr"))) frame2 = driver.find_element(By.XPATH, "//iframe[@id='wysiwygTextarea_ifr']"); # switch to frame driver.switch_to.frame(frame2.tag_name); print("--------------iframe found-------------------"); except: print("--------------iframe not found-------------------"); ...
切换到帧时,支持的表示法是:
切换到使用框架名称的框架:
driver.switch_to.frame('frame_name')
切换到使用帧索引的帧:
driver.switch_to.frame(1)
切换到使用框架元素的框架:
driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])
-
切换到父框架:
driver.switch_to.parent_frame()
切换到默认内容:
driver.switch_to.default_content()
这个用例
要切换您使用过的框架:
driver.switch_to.frame(frame2.tag_name);
即不支持的TAG_NAME
。因此您会看到错误:
Message='WebDriver' object has no attribute 'switch_to_frame'
解决方案
您可以使用下面这行代码:
# find the frame
wait.until(EC.element_to_be_clickable((By.ID, "wysiwygTextarea_ifr")))
frame2 = driver.find_element(By.XPATH, "//iframe[@id='wysiwygTextarea_ifr']");
# switch to frame by frame element
driver.switch_to.frame(frame2);