如何简化Selenium脚本,以便从其他Python脚本运行?
我在用selenium的时候遇到了一些麻烦,想把不必要的部分去掉,然后把剩下的打包成可以在其他脚本中调用的形式。我对这个过程有点搞不清楚,特别是那些单元测试的部分是怎么来的……理想情况下,我希望能把这些分离成一个函数,这样我就可以直接调用了。谢谢大家的建议。
(还有,是的,我确实需要用selenium,所以请不要建议其他工具,因为我会用selenium做很多事情,我需要搞明白这个问题。)
这是一个基本的演示脚本:
from selenium import selenium
import unittest
class TestGoogle(unittest.TestCase):
def setUp(self):
self.selenium = selenium("localhost", \
4444, "*firefox", "http://www.bing.com")
self.selenium.start()
def test_google(self):
sel = self.selenium
sel.open("http://www.google.com/webhp")
sel.type("q", "hello world")
sel.click("btnG")
sel.wait_for_page_to_load(5000)
self.assertEqual("hello world - Google Search", sel.get_title())
def tearDown(self):
self.selenium.stop()
if __name__ == "__main__":
unittest.main()
1 个回答
1
我建议你在其他脚本中创建一些函数,这些函数可以接收一个测试用例的引用作为参数。这样,如果出现问题,你的函数就可以让测试用例失败。比如说,下面这个是用来在谷歌搜索一个字符串并检查标题的:
def search_s(utest, in_str):
s = utest.selenium
s.type('q', in_str)
s.click('btnG')
s.wait_for_page_to_load('30000')
utest.assertEqual("%s - Google Search" % (in_str,), s.get_title())
然后,在你的测试用例中,可以这样调用它:
def test_google(self):
s.open('/')
search_s(self, "hello world")
你可以把这些方法做成库,这样就可以灵活组合你的测试部分。