不 , WebElement
在不切换到各自的情况下,不可能与
iframe直通内的任何物体相互作用。
Selenium
iframe
原因:
加载页面后, Selenium
默认情况下,焦点会停留在上 Top Window
。在 Top Window
包含了其他iframes
和 framesets
。因此,当我们需要与
WebElementiframe中的a进行互动时,我们必须
iframe通过以下一种方法切换到相应的方法:
帧切换方法:
我们可以通过3种方式切换到帧。
按框架名称 :
Name
iframe的属性,我们可以通过该属性切换到它。
例:
driver.switch_to.frame("iframe_name")按帧ID :
ID
iframe的属性,我们可以通过该属性切换到它。
例:
driver.switch_to.frame("iframe_id")按帧索引 :
假设页面中有10个框架,我们可以使用索引切换到iframe。
例:
driver.switch_to.frame(0)driver.switch_to.frame(1)
切换回主机 :
我们可以使用 default_content()
或切换回主机 parent_frame()
例:
driver.switch_to.default_content()driver.switch_to.parent_frame()
切换框架的更好方法:
切换帧的更好方法将是诱使 WebDriverWait
预期帧的可用性 expected_conditions
设置frame_to_be_available_and_switch_to_it
为:
通过
frame ID
:WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(By.ID,"id_of_iframe"))
通过
frame Name
:WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(By.NAME,"name_of_iframe"))
通过
frame Xpath
:WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(By.XPATH,"xpath_of_iframe"))
通过
frame CSS
:WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(By.CSS_SELECTOR,"css_of_iframe"))



