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