Selenium模块调用错误

时间:2017-08-08 21:00:56

标签: python python-2.7 selenium

我试图编写一个脚本来登录网站并按下按钮,而无需打开浏览器或其他类似的东西。当我尝试设置我的selenium远程案例时,我一直收到一个错误,我不断收到TYPEERROR:'模块'对象不可调用。

    # -*- coding: utf-8 -*-
import selenium
import unittest, time, re

class ClockInRemote(unittest.TestCase):
    def setUp(self):
        self.verificationErrors = []
        self.selenium = selenium("localhost", 4444, "*chrome", "http://signin/ess.aew/DEFAULT")
        self.selenium.start()

    def test_clock_in_remote(self):
        sel = self.selenium
        sel.open("/attendance/ess.aew/DEFAULT")
        sel.type("id=AE_BadgeID_ID", "1234")
        sel.type("id=AE_PIN_ID", "5678")
        sel.click("css=input[type=\"submit\"]")
        sel.wait_for_page_to_load("30000")
        self.failUnless(sel.is_text_present("Punch IN or OUT"))
        sel.click("id=ID_AE_PageActivity301q1")
        sel.wait_for_page_to_load("30000")

    def tearDown(self):
        self.selenium.stop()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()

这给了我错误:

======================================================================
ERROR: test_clock_in_remote (__main__.ClockInRemote)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\PyScripts\ClockInRemote.py", line 8, in setUp
    self.selenium = selenium("localhost", 4444, "*chrome", "http://signin/ess.aew/DEFAULT")
TypeError: 'module' object is not callable

----------------------------------------------------------------------
Ran 1 test in 0.011s

FAILED (errors=1)

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

当你这样做时

# -*- coding: utf-8 -*-
import selenium
import unittest, time, re

class ClockInRemote(unittest.TestCase):
    def setUp(self):
        self.verificationErrors = []
        self.selenium = selenium(...) #<----------------
        #[...]

知道名称为selenium的{​​{3}}上的对象不是RHS,即它不是函数。实际上,它是callable。您无法调用 模块。你做不到selenium(...)

我猜你真正想要的是使用模块中定义的函数,两者都有相同的nam。用selenium(...)代替selenium.selenium(...),我的意思是

class ClockInRemote(unittest.TestCase):
    def setUp(self):
        self.verificationErrors = []
        self.selenium = selenium.selenium("localhost", 4444, "*chrome", "http://signin/ess.aew/DEFAULT")
        #[...]

<小时/> 如果您收到以下错误

Traceback (most recent call last):
  [...]
AttributeError: 'module' object has no attribute 'selenium'

可能想要阅读module。试试这个

# -*- coding: utf-8 -*-
from selenium import selenium         #<----------------
import unittest, time, re

class ClockInRemote(unittest.TestCase):
    def setUp(self):
        self.verificationErrors = []
        self.selenium = selenium(...) #<----------------
        #[...]

更新

您使用的是Selenium的第3版。+

阅读this

  

Selenium 3.0的主要变化是我们删除了最初的Selenium Core实现,并将其替换为WebDriver支持的实现。这将影响Selenium RC API的所有用户。

这很可能是您的代码不再起作用的原因。你有两个解决方案。要么降级你的selenium版本(这很少是个好主意),要么你必须重新开发一个适用于这个新版本的新测试框架。