如何 select iframe 在 python 中出现在屏幕上
How to select an iframe as soon as it appears on the screen in python
我正在尝试在 iframe 中填充数据
但是 iframe 出现在 15-30 秒之间的任何地方
我用过 time.sleep(30)- 如果 iframe 在 25-30 秒左右加载,效果很好。
但有时它在 15 秒加载,剩下的 15 秒被浪费了
我不想浪费时间在明确的睡眠上
有没有其他方法可以让我在 iframe 出现在视口中时立即对其执行操作?
我的代码:
driver.find_element_by_xpath("//button[@type='submit'][contains(.,'Submit')]").click()
time.sleep(30)
iframe = driver.find_elements_by_tag_name("iframe")
driver.switch_to_frame(iframe[3])
driver.find_element_by_xpath("something").send_keys()
driver.find_element_by_xpath(something).click()
driver.switch_to_default_content()
您可以使用 webdriverwait 如下:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"(//iframe)[3]")))
driver.find_element_by_xpath("something").send_keys()
driver.find_element_by_xpath(something).click()
driver.switch_to.default_content()
您可以将其与显式等待一起使用:
示例代码:
wait = WebDriverWait(driver, 10)
iframe = driver.find_elements_by_tag_name("iframe")
wait.until(EC.frame_to_be_available_and_switch_to_it((iframe[3])))
driver.find_element_by_xpath("something").send_keys()
driver.find_element_by_xpath(something).click()
driver.switch_to.default_content()
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
的官方文档
请注意,switch_to_default_content()
已被弃用。您将不得不使用 driver.switch_to.default_content()
代替。
我正在尝试在 iframe 中填充数据 但是 iframe 出现在 15-30 秒之间的任何地方
我用过 time.sleep(30)- 如果 iframe 在 25-30 秒左右加载,效果很好。 但有时它在 15 秒加载,剩下的 15 秒被浪费了
我不想浪费时间在明确的睡眠上 有没有其他方法可以让我在 iframe 出现在视口中时立即对其执行操作?
我的代码:
driver.find_element_by_xpath("//button[@type='submit'][contains(.,'Submit')]").click()
time.sleep(30)
iframe = driver.find_elements_by_tag_name("iframe")
driver.switch_to_frame(iframe[3])
driver.find_element_by_xpath("something").send_keys()
driver.find_element_by_xpath(something).click()
driver.switch_to_default_content()
您可以使用 webdriverwait 如下:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"(//iframe)[3]")))
driver.find_element_by_xpath("something").send_keys()
driver.find_element_by_xpath(something).click()
driver.switch_to.default_content()
您可以将其与显式等待一起使用:
示例代码:
wait = WebDriverWait(driver, 10)
iframe = driver.find_elements_by_tag_name("iframe")
wait.until(EC.frame_to_be_available_and_switch_to_it((iframe[3])))
driver.find_element_by_xpath("something").send_keys()
driver.find_element_by_xpath(something).click()
driver.switch_to.default_content()
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
的官方文档
请注意,switch_to_default_content()
已被弃用。您将不得不使用 driver.switch_to.default_content()
代替。