【发布时间】:2017-07-06 11:23:38
【问题描述】:
我正在Selenium Pychon Bindings document 下编写我的第一个单元测试。
我使用 Chrome 驱动程序编写测试如下:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import unittest
class PythonOrgSearch(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome(r"C:\chromedriver_win32\chromedriver")
def test_search_in_python_org(self):
driver = self.driver
driver.get(r"http://www.python.org")
self.assertIn("Python", driver.title)
el = driver.find_element_by_name("q")
el.send_keys("pycon")
el = driver.find_element_by_id("submit")
el.click()
assert "No results found." not in driver.page_source
def tearDown(self):
self.driver.close()
if __name__ == "__main__":
unittest.main()
在终端上运行它就可以了。终端返回:
.
----------------------------------------------------------------------
Ran 1 test in 7.873s
OK
但是如果我替换
self.driver = webdriver.Chrome(r"C:\chromedriver_win32\chromedriver")
与
self.driver = webdriver.PhantomJS(r"C:\phantomjs-2.1.1\bin\phantomjs")
代码如下
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import unittest
class PythonOrgSearch(unittest.TestCase):
def setUp(self):
self.driver = webdriver.PhantomJS(r"C:\phantomjs-2.1.1\bin\phantomjs")
def test_search_in_python_org(self):
driver = self.driver
driver.get(r"http://www.python.org")
self.assertIn("Python", driver.title)
el = driver.find_element_by_name("q")
el.send_keys("pycon")
el = driver.find_element_by_id("submit")
el.click()
assert "No results found." not in driver.page_source
def tearDown(self):
self.driver.close()
if __name__ == "__main__":
unittest.main()
我的终端给了我一个错误:
E
======================================================================
ERROR: test_search_in_python_org (__main__.PythonOrgSearch)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_python_org_search.py", line 24, in test_search_in_python_org
el.click()
File "C:\Program Files (x86)
self._execute(Command.CLICK_ELEMENT)
File "C:\Program Files (x86)
return self._parent.execute(command, params)
File "C:\Program Files (x86)
self.error_handler.check_response(response)
File "C:\Program Files (x86)
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotVisibleException: Message: {"errorMessage":"Element is not
"Content-Length":"81","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:50294",
67e-433b649e227d\"}","url":"/click","urlParsed":{"anchor":"","query":"","file":"click",
elative":"/click","port":"","host":"","password":"","user":"","userInfo":"","authority":"",
","queryKey":{},"chunks":["click"]},
46/click"}}
Screenshot: available via screen
----------------------------------------------------------------------
Ran 1 test in 6.214s
FAILED (errors=1)
有人能告诉我为什么我不能在 PhantomJS 中使用 click 吗?
【问题讨论】:
标签: python unit-testing selenium phantomjs selenium-chromedriver