Python 随机选择不能正常工作

Python 随机选择不能正常工作,python,selenium-webdriver,random,Python,Selenium Webdriver,Random,它没有选择foo列表中的一个随机字符串,而是第一次选择一个随机字符串,第二次只选择第一个字符串并向其中添加另一个随机字符串。所以它只是将字符串添加到rand变量中,而不是覆盖它。我怎样才能解决这个问题 我尝试向上移动rand变量,但没有成功。这与random.choice无关 您正在误用该对象: 在ActionChains对象上调用动作的方法时,动作存储在ActionChains对象的队列中。调用perform()时,将按照事件排队的顺序触发事件 每次调用actions.send_keys(ra

它没有选择foo列表中的一个随机字符串,而是第一次选择一个随机字符串,第二次只选择第一个字符串并向其中添加另一个随机字符串。所以它只是将字符串添加到rand变量中,而不是覆盖它。我怎样才能解决这个问题


我尝试向上移动rand变量,但没有成功。

这与
random.choice
无关

您正在误用该对象:

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


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

random.choice
有效。你的代码没有。
foo
在哪里声明?a很好。它贴在我的程序顶部。请编辑问题以显示
foo
的定义。此外,如果您可以从代码中删除所有不相关的行,它将有助于创建对您正在执行的
操作的问题的关注。send_keys(rand)
将继续发送新的随机选择。您可能需要使用
操作。为之前发送的每个字符发送\u键(key.BACKSPACE)
,以删除原始随机选择。那么我如何修复它呢?@DanielCarlsson:执行以下操作之一:(1)跳过使用
操作链,然后执行
驱动程序。通过\u whatever(whatever)查找\u元素。\u发送\u键(rand)
。(2) 在for循环中移动
actions=ActionChains(驱动程序)
。(3) 调用
actions.reset\u actions()
actions.perform()之后执行。(我对
reset_actions()
不太确定。文档中说它“清除已存储在远程端的操作”。这听起来可能会清空操作队列。否则,选项1和2肯定会起作用。)
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