Python Threading AssertionError

时间:2017-08-13 19:47:32

标签: python selenium phantomjs

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
import threading

global counter
counter = 0
driver = webdriver.PhantomJS()
driver.set_window_size(1920, 1080)

class ssbooster(threading.Thread):
    def login_logout(self):
        while True:
            driver.get('x')
            select = Select(driver.find_element_by_id('x'))
            select.select_by_visible_text('x')

            driver.find_element_by_id('x').send_keys('x')
            driver.find_element_by_id('x').send_keys('x')
            driver.find_element_by_name('button').click()
            global counter
            counter += 1
            print(counter)

x = ssbooster(ssbooster)
y = ssbooster(ssbooster)
x.start()
y.start()

这个脚本使用的是PhantomJS,我不知道这是不是问题所在。当我尝试运行此代码时,我收到此错误。

Traceback (most recent call last):
  File "C:/Users/x/Desktop/x/x.py", line 25, in <module>
    x = ssbooster(ssbooster)
  File "C:\Users\x\AppData\Local\Programs\Python\Python36-32\lib\threading.py", line 780, in __init__
    assert group is None, "group argument must be None for now"
AssertionError: group argument must be None for now

我试着搜索一下,但所有答案都让我很困惑。如果有人能告诉我导致问题的原因以及如何解决问题,我会赞不绝口。

谢谢!

1 个答案:

答案 0 :(得分:0)

您正在传递该类以初始化您的线程类

x = ssbooster(ssbooster)
y = ssbooster(ssbooster)
x.start()
y.start()

您只需要实例化您的类以启动线程。所以你的代码应该是

x = ssbooster()
y = ssbooster()
x.start()
y.start()

此外,您的代码将无法正常工作,因为您正在使用针对两个线程的公共驱动程序。您需要为每个线程都有一个驱动程序,或者等待轮到您使用驱动程序,这使得它只是一个顺序任务。请参阅下面的线程,其中显示了您关于线程的共享变量

Python creating a shared variable between threads

另请参阅此内容以了解如何为每个线程创建单独的驱动程序

Selenium Threads: How to open the same browser in multiple threads? for the purposes of each browser using a unique proxy