gpt4 book ai didi

python - Selenium - 将文件上传到iframe

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:53 28 4
gpt4 key购买 nike

我有一个测试,它具有以位于 iframe 中的形式上传文件的方法。

问题是测试不稳定,有时会因错误而失败(运行三次以获取错误示例,第三次运行失败):

def fill_offer_image(self):
driver = self.app.driver
driver.switch_to.frame(driver.find_elements_by_name("upload_iframe")[3])
E IndexError: list index out of range

我有 implicitly wait = 10 并且您可以考虑页面上的几个 iframe 具有相同的类,所以我不得不使用数组。有时并非所有(或所有?)iframe 都已加载。

有人想过如何提高该测试的稳定性吗?它可能与 iframe 本身的机制有关吗?

最佳答案

我会使用 Explicit Wait并且通过写入 custom expected condition 等到具有 name="upload_iframe" 的框架元素的数量变为 4 :

from selenium.common.exceptions import StaleElementReferenceException
from selenium.webdriver.support import expected_conditions as EC

class wait_for_n_elements(object):
def __init__(self, locator, count):
self.locator = locator
self.count = count

def __call__(self, driver):
try:
count = len(EC._find_elements(driver, self.locator))
return count == self.count
except StaleElementReferenceException:
return False

用法:

wait = WebDriverWait(driver, 10)
wait.until(wait_for_n_elements((By.NAME, 'upload_iframe'), 4))

driver.switch_to.frame(driver.find_elements_by_name("upload_iframe")[3])

关于python - Selenium - 将文件上传到iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29940783/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com