我面临以下问题:
我需要一个随机生成一个范围内的xpath并单击它,然后检查是否存在一个元素,如果可以的话请提供另一个功能。否则返回,然后重试。

found = False
        while not found:
            rndm = random.choice(article_list)
            random_link = driver.find_element_by_xpath("html/body/section/div[4]/div[1]/div/aside[%s]/a" % (rndm))
            random_link.click()
            try:
                driver.find_element_by_css_selector("element").is_displayed()
                self.check() #function which check if the element is ok
                found = True
            except NoSuchElementException:
                driver.back()


它可以工作,但是使用while循环。我需要限制一定的尝试次数吗?有什么建议怎么做?我试过了:

for _ in itertools.repeat(None, N):


但是当N次尝试后未找到元素时,则测试不会下降并声明True。当发现它并通过self.check函数检查并且一切都很好时,我收到NoSuchElement错误。

最佳答案

“我需要限制一定的尝试次数?”


由于现有代码已经在工作,因此您可以尝试添加新逻辑,同时尝试尽可能使现有代码保持不变。除了检查found变量外,使用计数器变量并检查计数器的一种可能方法是:

found = False
counter = 0
max_tries = 10
while not found and counter < max_tries:
    counter += 1
    ......
    try:
        ......
        self.check() #function which check if the element is ok
        found = True
    except NoSuchElementException:
        driver.back()

09-04 23:42