Selenium / Python做了n次

时间:2015-10-10 13:44:38

标签: python selenium xpath

我面临以下问题: 我需要a在一个范围内随机生成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错误。

1 个答案:

答案 0 :(得分:1)

  

"我需要限制它进行一定数量的尝试?"

由于现有代码已经运行,您可以尝试添加新逻辑,同时尽可能保持现有代码不变。一种可能的方法是使用计数器变量并检查计数器以及检查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()