python中的selenium webdriver。有第三方LIB吗?

python中的selenium webdriver。有第三方LIB吗?,python,webdriver,Python,Webdriver,python中是否有任何第三方LIB可以在webdriver上执行某些操作 我正在考虑在python中使用,但我真的很想使用。我的意思是,它不是像这样的代码: cheese = driver.find_element_by_css_selector("#food span.dairy.aged") cheese.click() class LoginPage(object): def __init__(self, testcase): self.tc = testca

python中是否有任何第三方LIB可以在webdriver上执行某些操作

我正在考虑在python中使用,但我真的很想使用。我的意思是,它不是像这样的代码:

cheese = driver.find_element_by_css_selector("#food span.dairy.aged")
cheese.click()
class LoginPage(object):

    def __init__(self, testcase):
        self.tc = testcase

    def login(self, username, password, at_login_page=False):
        if not at_login_page:
            self.tc.browser.get(self.tc.ROOT + '/login')

        self.tc.browser.find_element_by_id('id_username').send_keys(username)
        self.tc.browser.find_element_by_id('id_password').send_keys(password)
        login_button = self.tc.browser.find_element_by_id('login-button').click()
我想要类似(不是python!)的东西:

所以我事先定义了我的UI,然后编写测试用例。如果UI发生变化,我需要改变UI模块定义,而不必担心测试用例

我可以手动滚动这个,但是有python的lib可以为我这样做吗

具有允许您使用纯文本关键字编写测试的。例如:

| Simple test case
| | open browser | http://example.com
| | click link | //some-crazy/xpath
| | page should contain | blah blah blah

Robotframework是用python编写的。那是你感兴趣的东西吗

你试过了吗?您可以使用jQuery样式选择器。

据我所知,没有一个现有项目可以满足您的需要。我在Webdriver功能测试中使用的一种模式是将每个逻辑页面定义为一个类。大概是这样的:

cheese = driver.find_element_by_css_selector("#food span.dairy.aged")
cheese.click()
class LoginPage(object):

    def __init__(self, testcase):
        self.tc = testcase

    def login(self, username, password, at_login_page=False):
        if not at_login_page:
            self.tc.browser.get(self.tc.ROOT + '/login')

        self.tc.browser.find_element_by_id('id_username').send_keys(username)
        self.tc.browser.find_element_by_id('id_password').send_keys(password)
        login_button = self.tc.browser.find_element_by_id('login-button').click()
然后在这样的测试中使用它,在这种情况下,“self”是单元测试的一个实例:

    login_page = site_pages.LoginPage(self)
    login_page.login(self.username, self.password)

使用此模式可能会使您接近您想要做的事情。页面的工作方式在逻辑上包含在类方法中,而不是在每个功能测试中无休止地重复

如果我错了,请纠正我,但是Tellurium(您提供的链接)不就是Selenium的DSL吗?那么为什么不直接使用它呢?这是一个用groovy编写的DSL,所以如果我要使用它,我必须用python来实现我自己的,我可能最终会这样做,但我想知道是否有其他替代方案。此外,tellurium使用selenium 1.x(不是webdriver),因此我不能直接使用它,我明白了。不幸的是,我不知道任何现有的Python等价物,所以滚动您自己的可能是您最好的选择。您介意解释一下这个非Python代码的功能吗?如果我们知道你想要实现什么,我们可以尝试提出一些建议——特别是在不学习新语言的新图书馆的新概念的情况下!查看我发布的tellurium链接和介绍。基本上,我唯一关心的是能够独立于测试来定义我的页面的“模型”,这样,如果页面发生变化,我所需要做的就是改变模型,而不是测试。这似乎不是基于selenium,但这没关系。你知道硒和这个有什么区别吗?