切换到iframe selenium python时出错

2024-09-30 12:25:23 发布

您现在位置:Python中文网/ 问答频道 /正文

目前我正试图切换到iframe/fancybox,但我得到以下错误:

line 237, in check_response raise exception_class
(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: 
Message: unknown error: missing 'ELEMENT'

我就是这样定位iframe的:

^{pr2}$

iframe名称为:

fancybox-frame1518441842751" 

html格式:

  <iframe id="fancybox-frame1518443041369" name="fancybox-frame1518443041369" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen="" scrolling="auto" src="/reminder/add/relation/58048" kwframeid="1"></iframe>

Tags: inmessageresponsecheck错误lineexceptionscreen
2条回答

id和{}属性看起来是动态的(代码和html中的数字不匹配)。您可以尝试通过部分id/name进行定位

_iframe_ = {"by": By.CSS_SELECTOR, "value": "[id*='fancybox-frame']"}
# "[name*='fancybox-frame']"

作为补充说明,frame()可以接收id/name作为参数

^{pr2}$

会有效果的(当然除了动态问题)。

要正确识别<iframe>,必须按如下方式更改Locator Strategy

_iframe_ = {"by": By.XPATH, "value": "//iframe[@class='fancybox-iframe' and starts-with(@id,'fancybox-frame') and contains(@src,'/reminder/add/relation/')]"}

 def __init__(self, driver):
    super(BasePage, self).__init__()
    self.driver = driver
    WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((self._iframe_)))

相关问题 更多 >

    热门问题