在python中是否有任何第三方库在webdriver上执行 ?
我正在考虑在python中使用selenium webdriver,但我真的想使用ui-module based approach。我的意思是代替可能看起来像这样的代码:
cheese = driver.find_element_by_css_selector("#food span.dairy.aged")
cheese.click()
我想要的东西(不是python!):
ui.Div(uid: "div1", clocator: [id: "div1"]) {
Div(uid: "inner-container", clocator: [id: "div2"]) {
List(uid: "list1", clocator: [tag: "ul"], separator: "li"){
UrlLink(uid: "{all}", clocator: [:])
}
}
}
click 'inner-container'
所以我事先定义我的UI,然后编写测试用例。如果UI发生变化,我需要更改UI模块定义,而不必担心测试用例。
我可以手动滚动这个,但是有没有为我这样做的python库?
答案 0 :(得分:2)
没有我知道的现有项目可以满足您的需求。我在使用Webdriver进行功能测试时使用的一种模式是将每个逻辑页面定义为一个类。像这样:
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)
使用此模式可能会让您接近您想要做的事情。页面工作方式逻辑上包含在类方法中,而不是通过每个功能测试无休止地重复。
答案 1 :(得分:1)
robot framework有library for selenium,可让您使用纯文本关键字编写测试。例如:
| Simple test case
| | open browser | http://example.com
| | click link | //some-crazy/xpath
| | page should contain | blah blah blah
Robotframework是用python编写的。这是你感兴趣的东西吗?
答案 2 :(得分:0)
你试过Splinter吗?您可以使用jQuery样式的选择器。