我正在使用selenium,并且在函数中必须多次执行一些操作,这里的要点是,当我在该页面上进行40次迭代时,硒中断,我需要重新启动该函数。我已经通过放置一个count变量解决了这个问题,当满足一定数量的迭代次数时,selenium将关闭控制器并重新打开它,但这是问题所在,当这种情况发生时,for循环中count变量遇到的元素重新启动硒时不会出现这种情况,这将转到我列表中的下一项。
这是我的代码:
import os
import time
from selenium import webdriver
def prueba(n=2):
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_experimental_option('useAutomationExtension', False)
chromeOptions.add_argument('log-level=3')
chromeOptions.add_argument('--ignore-certificate-errors')
prefs = {"download.default_directory": os.getcwd(),
"directory_upgrade": True}
chromeOptions.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(chrome_options=chromeOptions, desired_capabilities=chromeOptions.to_capabilities(),executable_path='/Users/kev/Documents/Proyectos/Selenium/chromedriver')
driver.get("https://www.google.com.mx/")
count = 0
for i in ['a', 'b', 'c', 'd']:
if count < n:
if i == 'a':
try:
driver.get("https://www.youtube.com")
print('a')
time.sleep(1)
except Exception as e:
print(e)
elif i == 'b':
try:
driver.get("https://www.facebook.com")
print('b')
time.sleep(1)
except Exception as e:
print(e)
elif i == 'c':
try:
driver.get("https://www.twitter.com")
print('c')
time.sleep(1)
except Exception as e:
print(e)
else:
try:
driver.get("https://www.instagram.com")
print('d')
time.sleep(1)
except Exception as e:
print(e)
count+=1
print(count)
else:
count = 0
driver.close()
print('Esperando 5 segundos...')
time.sleep(2)
driver = webdriver.Chrome(chrome_options=chromeOptions, desired_capabilities=chromeOptions.to_capabilities(),executable_path='/Users/kev/Documents/Proyectos/Selenium/chromedriver')
driver.get("https://www.google.com.mx/")
continue
prueba()
所以在这里,当我运行我的函数时,一切正常,但是当i ='c'时,计数变量满足了,此函数传递给else语句,以重置计数变量和Selenium,并在再次启动时直接进入'd'而不是'c'
答案 0 :(得分:0)
您的逻辑似乎不正确。您定义的loop
的for很难进行四次迭代['a', 'b', 'c', 'd']
的设置。每次迭代时,它会将计数加1。当它到达“ c”,即第三次迭代时,计数为2。因此它在第一个条件中失败。
相反,您应该指定一个嵌套的for循环:
n = 2
for _ in range(n):
for i in ['a', 'b', 'c', 'd']:
# Do Stuff
或者使用带有计数器的while循环。
n = 2
counter = 0
while counter < n:
for i in ['a', 'b', 'c', 'd']:
# Do Stuff
counter +=1