【发布时间】:2022-01-09 09:02:10
【问题描述】:
我正在尝试将 Selenium 的“焦点”切换到另一个 iframe 内的 iframe 内的内容。到目前为止,我下面的硒测试似乎有效。但是,我想在该 iframe 中获取另一个 iframe - 但我现在不确定。
这是标记(第二个 iframe 突出显示):
这是我目前的测试(它有效——只是不确定如何在第一个 iframe 中获取第二个 iframe):
import unittest
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from .functional_test import FunctionalTest
class MyTest(FunctionalTest):
URL = '/datastory/my-datastory/'
@classmethod
def setUpClass(cls):
"""Set up method."""
super().setUpClass()
cls.URL = cls.format_url(cls.URL)
cls.login_user(cls)
def test_iframe(self):
container = self.browser.find_element_by_id('visual-31')
carousel = container.find_element_by_css_selector('.col-sm-12:nth-child(2) div.visual #classics-50-carousel')
wait = WebDriverWait(self.browser, 60)
wait.until(ec.visibility_of(carousel))
page_source = carousel.get_attribute("src");
self.assertEqual(
page_source,
'https://observablehq.com/embed/@ddsg/paramount-databyte-visuals?cells=classics50yrs'
)
# switch Selenium focus to the iframe
iframe = self.browser.switch_to.frame(carousel);
#NOW HOW DO I GET THE OTHER IFRAME??
# switch back
self.browser.switch_to.default_content()
【问题讨论】:
-
你会使用相同的方法,(一旦你切换到父框架)虽然我会为两者使用“frameToBeAvailableAndSwitchToIt”预期条件。当您找到它时,您可以定位 src 属性:selenium.dev/selenium/docs/api/java/org/openqa/selenium/support/…
标签: python selenium selenium-webdriver iframe webdriverwait