随机选择不正常

时间:2017-08-16 20:21:54

标签: python selenium-webdriver random

foo = ['hello', 'hi', 'sup', 'hey', 'yo']
def main():
    actions = ActionChains(driver)

    with open('links.txt', 'r') as f:
        urls = []
        for url in f:
            rand = random.choice(foo)
            driver.get(url)
            time.sleep(3)
            driver.execute_script("window.scrollTo(0, 200)")
            time.sleep(1)
            try:
                driver.find_element_by_class_name('comment-simplebox-renderer-collapsed-content').click()
                actions.send_keys(rand)
                actions.perform()
                driver.find_element_by_xpath("""//*[@id="comment-simplebox"]/div[3]/div[2]/button[2]""").click()
                time.sleep(3)
            except NoSuchElementException:
                pass

不是选择foo列表中的随机字符串,而是第一次选择随机字符串,第二次选择第一个字符串并添加另一个随机字符串。所以它只是为rand变量添加字符串而不是覆盖它。我该如何解决这个问题?

我尝试向上移动rand变量,但这不起作用。

1 个答案:

答案 0 :(得分:0)

这与random.choice无关。

您滥用ActionChains对象:

  

当您在ActionChains对象上调用操作方法时,操作将存储在ActionChains对象的队列中。当您调用perform()时,事件将按照它们排队的顺序触发。

每次调用actions.send_keys(rand)时,都会向队列添加更多操作。调用actions.perform()并不会清除操作队列。