当前位置: 首页 > 面试题库 >

硒-可见性_定位:__init __()恰好接受2个参数(给定3个)

缪朝
2023-03-14
问题内容

我在使用Selenium Python绑定的测试代码中遇到此错误:

>           twitter_campaigns = wait.until(EC.visibility_of_element_located(By.CSS_SELECTOR, TWITTER_CAMPAIGNS))
E           TypeError: __init__() takes exactly 2 arguments (3 given)

这就是我正在执行的操作:

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()

所以我想知道为什么我在所有类上都没有定义__init__()方法,而是在pytest之后定义了setUp和tearDown方法,从而导致上述错误。任何想法为什么要采取3args?


问题答案:

您应该问的问题 不是 “为什么要占用3个参数”,而是“ 什么 要占用3个参数”。您的回溯是指代码中非常特定的一行,而这正是问题所在。

根据此处的Selenium Python文档,selenium.webdriver.support.expected_conditions.visibility_of_element_located应该使用一个元组来调用;它不是一个函数,但实际上是一个类,其
初始化程序 只要求隐式参数之外的1个参数self

class visibility_of_element_located(object):
   # ...
   def __init__(self, locator):
       # ...

因此,您需要visibility_of_element_located使用两个嵌套括号来调用:

wait.until(EC.visibility_of_element_located( ( By.CSS_SELECTOR, TWITTER_CAMPAIGNS ) ))

这意味着,而不是3个参数selfBy.CSS_SELECTOR并且TWITTER_CAMPAIGNS,在visibility_of_element_located.__init__将与刚预计2个参数调用:隐式self和定位:一个(type, expression)元组。



 类似资料:
  • 问题内容: 我在使用Selenium Python绑定的测试代码中遇到此错误: 这就是我正在执行的操作: 所以我想知道为什么我在所有类上都没有定义方法,而是在pytest之后定义了setUp和tearDown方法,从而导致上述错误。任何想法为什么要采取3 args? 问题答案: 您应该问的问题 不是 “为什么要占用3个参数”,而是“ 什么 要占用3个参数”。您的回溯是指代码中非常特定的一行,而这正

  • 问题内容: 我正在使用python从另一个文件的另一类的方法中调用一个文件中的一个类中的方法 假设我的文件包含 另一个文件是 当我运行此文件时,出现错误: 问题答案: 如果在类中,则您的方法应为: 您可以在此处阅读有关其原因的信息。

  • 函数insert接受对链表中第一个节点的引用、新值和位置,并在列表中的给定位置插入具有给定值的新节点。 函数pop to引用链表中的第一个节点和一个位置,并删除链表中该位置的节点。 函数stringify_linked_list引用链表的第一个节点并返回链表中所有节点的可打印字符串。 到目前为止,我的代码如下。如果你对我如何修复它有任何想法,请让我知道。谢谢!

  • 问题内容: 的所有文档似乎都表明这是一段有效的代码-不明白吗? 问题答案: 文件说两个参数:。 第一个是mysqli实例的链接,第二个是要转义的字符串。

  • 问题内容: 我试图让我的头围绕mysql。谁能告诉我为什么这个MySQL查询无法正常工作?我收到以下错误: 警告:mysqli_error()期望恰好有1个参数,第11行的/home/freebet2/public_html/test.php中给出的参数为0 test.php db.php 如果我将alter string更改为:之类的原因,我不会收到任何错误。 问题答案: 就sql错误而言,“用