Car*_*elo 6 python selenium pytest selenium-webdriver
我在使用Selenium Python Bindings的测试代码中收到此错误:
> twitter_campaigns = wait.until(EC.visibility_of_element_located(By.CSS_SELECTOR, TWITTER_CAMPAIGNS))
E TypeError: __init__() takes exactly 2 arguments (3 given)
Run Code Online (Sandbox Code Playgroud)
这就是我执行的:
class TestTwitter(TestLogin, TestBuying):
def setup(self, timeout=10):
self.driver = webdriver.Firefox()
self.driver.get(BASEURL)
self.driver.implicitly_wait(timeout)
def test_campaigns_loaded(self, timeout=10):
self.signin_action()
self.view_twitter_dashboard()
self.select_brand()
wait = WebDriverWait(self.driver, timeout)
twitter_campaigns = wait.until(EC.visibility_of_element_located(By.CSS_SELECTOR, TWITTER_CAMPAIGNS))
assert True == twitter_campaigns
def teardown(self):
self.driver.close()
Run Code Online (Sandbox Code Playgroud)
所以我想知道为什么我得到了上述错误,在我没有定义__init__()
方法的所有类中,我将setUp和tearDown方法定义为pytest跟随.任何想法为什么要采取3 args?
Ant*_*ala 21
你应该问的问题不是 "为什么它采取3 args",而是" 什么是3 args".您的回溯是指代码中非常特定的行,它存在问题所在.
根据这里的Selenium Python文档,selenium.webdriver.support.expected_conditions.visibility_of_element_located
应该用元组调用; 它不是一个函数,而是一个实际上是一个类,它的初始化程序只需要一个超出隐式self的参数:
class visibility_of_element_located(object):
# ...
def __init__(self, locator):
# ...
Run Code Online (Sandbox Code Playgroud)
因此,您需要self
使用两个嵌套括号调用:
wait.until(EC.visibility_of_element_located( ( By.CSS_SELECTOR, TWITTER_CAMPAIGNS ) ))
Run Code Online (Sandbox Code Playgroud)
这意味着,而不是3个参数visibility_of_element_located
,self
并且By.CSS_SELECTOR
,在TWITTER_CAMPAIGNS
将与刚预计2个参数调用:隐式visibility_of_element_located.__init__
和定位:一个self
元组.
归档时间: |
|
查看次数: |
4587 次 |
最近记录: |