很常遇到 iframe, 不知道為什麼設計師要這樣子去做,弄了很多 iframe 在同一個表單裡。要在 python selenium 裡存取 iframe 可以這樣做:
iframes = driver.find_elements(By.TAG_NAME, "iframe") for iframe in iframes: driver.switch_to.frame(iframe) ... driver.switch_to.default_content()
切換 iframe
方法1:有id,並且id唯一,直接寫id
driver.switch_to.frame(“iframe-id”)
方法2:有name,並且唯一,直接寫name
driver.switch_to.frame(“iframe-name”)
方法3:先取得iframe元素
iframe = driver.find_elements(…)
driver.switch_to.frame(iframe)
方法4:通過index索引(從0開始)
driver.switch_to.frame(0)
使用switch_to.frame 之後,要需退出iframe,再操作。如果沒退出的話,會變成是往 iframe 裡的 iframe 走。
driver.switch_to.default_content()
多個第一層的平行iframe的切換問題
1.switch to 第一層的f1.
driver.switch_to_frame(“f1”)
······
2.退出iframe 到 root.
driver.switch_to_default_content()
3.switch to 第一層的f2.
driver.switch_to_frame(“f2”)
ifram f2 在 iframe1 的內容中,切換到f2 解法:
driver.switch_to_frame(“f1”)
driver.switch_to_frame(“f2”)