如何将Selenium对象传递给另一个类?

0 投票
2 回答
1697 浏览
提问于 2025-04-16 18:00

我在第二个类中调用我原来的 Selenium 实例时遇到了问题,这个类里有一个叫 GetRows() 的函数。我该怎么才能在我的函数类中获取到这个 Selenium 对象呢?

Class test(unittest.TestCase):
    def setUp(self):
        self.verificationerrors=[]
        self.selenium = selenium("localhost",4444,"","http://localhost")
        self.selenium.start()

    def test_untitiled(self):
        pass

    def teardown(self):
        pass

    def Get(self):     
        return self.selenium

Class Functions:
    def GetRows(self)
        selenium.get_xpath_count(path)   //Cant call selenium object here! :(
        sel = test().get()   // Does not allow me to return self. selenium :(

2 个回答

0

我会这样做:把你需要做的所有事情都抽象到第二个类里,然后让你的测试只去调用这个类。

所以你的测试类看起来会像这样:

class SearchTests(unittest.TestCase):

    _count_regex = '^.* (\d+) - (\d+)'
    _total_count_regex = '^.* \d+ - \d+ of (\d+)'

    def setUp(self):
        self.selenium = selenium(server, 
                                port,
                                browser, 
                                baseurl)
        self.selenium.start()
        self.selenium.set_timeout(ConnectionParameters.page_load_timeout)

    def tearDown(self):
        self.selenium.stop()

    def test_that_character_escaping_doesnt_go_into_the_test(self):
        """ Test for Litmus 4857
            https://litmus.mozilla.org/show_test.cgi?id=4857"""
        amo_home_page = AddonsHomePage(self.selenium)
        amo_search_page = amo_home_page.search_for("personas%20plus")
        self.assertTrue(amo_search_page.is_text_present("No results found."))
        results_count = amo_search_page.results_count
        self.assertTrue("0 - 0 of 0" in results_count)

而你的抽象类可能会像这样:

class AddonsSearchHomePage(AddonsHomePage):

    _results_count_header = "css=h3.results-count"
    _page_counter = "css=div.num-results"

    def __init__(self, selenium):
        self.selenium = selenium

    @property
    def results_count(self):
        return self.selenium.get_text(self._results_count_header)

    @property
    def page_results_count(self):
        return self.selenium.get_text(self._page_counter)

你可以在这个链接看到一个完整的项目:https://github.com/AutomatedTester/Addon-Tests

0

你的第二个类要么继承你的“test”类,要么创建一个“test”类的实例,这个“test”类负责创建Selenium对象。

撰写回答