如何在Python/Selenium中选择框架内没有ID的元素?



我使用Python 3.9, chromedriver 101和最新版本的Selenium,我试图在没有ID的框架内选择并单击元素。我要点击的框架和元素的HTML是

<iframe title="false" class="k-content-frame" src="https://publisher.content2classroom.com/viewer.html#viewPublisherInstitutions?winId=ManagePublisherInstitutions" allowfullscreen="" frameborder="0">This page requires frames in order to show content</iframe>
...
<span id="subpageBackTitle" class="subpage-back-title">&lt; back</span>

我有以下Python,当元素可见时,它无法选择

self.driver.switch_to.default_content()
...
element = WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".subpage-back-title")))

结果错误是

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/support/wait.py:89: TimeoutException

导航到框架并选择/单击有问题的元素的正确方法是什么?

要点击一个框架内的元素,你需要先切换到该框架。

你可以使用任何选择器切换到一个帧。对于iframe,.k-content-frame选择器应该工作。

# Store iframe web element
iframe = driver.find_element(By.CSS_SELECTOR, ".k-content-frame")
# switch to selected iframe
driver.switch_to.frame(iframe)
# Your element
element = WebDriverWait(self.driver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".subpage-back-title")))

你可以使用frame_to_be_available_and_switch_to_it期望条件来等待一个帧。所有可用的预期条件都可以在这里找到。

WebDriverWait(self.driver, 5).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, ".k-content-frame")))

相关内容

  • 没有找到相关文章

最新更新