2016-10-10 63 views
-1

我试图用Selenium替换TestComplete进行自动化测试,理想情况下无需重新编写所有不同的功能。创建Selenium模块来替换testcomplete

该计划是复制别名结构,用于查找TestComplete中的元素,并使用一个python模块进行查找web元素。

我已经能够得到这个工作的单个页面,但由于Python似乎如何与导入工作,我到目前为止一直无法找到一种方式来导入超越此。

测试完成时的示例代码是。

Aliases.LoginPage.Username.SetText(“用户名”)

要我创建了一个名为别名模块硒复制此,有一个名为LoginPage类,包含了一个名为username属性。

所以Aliases.py看起来象下面这样:

from selenium import webdriver 
    driver = webdriver.Chrome("C:\\BrowserDrivers\\chromedriver.exe") 

    class LoginPage: 
     _username = driver.find_element_by_id("txtUser") 

     @property 
     def user(self): 
      return type(self)._user 

,并通过调用:

import Aliases 

    login_page = Aliases.LoginPage() 
    login_page.username.send_keys("username") 

能正常工作只用一个页面,但是如果我添加第二个类,这个模块与另一个页面上的元素的find_element代码我得到一个“元素未发现异常”

调试显示,这是因为python试图设置所有的类属性在导入Aliases模块时,当然不会找到登录页面上的元素。 即使我在Aliases模块中指定要导入的类,也会发生这种情况。

有没有一种方法可以让我告诉Python只设置正在导入的类的属性 或 另一种方法可以让我构建项目以复制在当前编码测试中找到元素的方式?

另外,我接近这个错误的方式,我应该开始修改当前的代码,我们必须硒是特定的?

回答

1

我不知道你正在谈论的更改的规模,但我的猜测是,只是重写测试会比试图编写代码更快(更好),以便您不必做出改变。从长远来看,重写可能需要较少的维护,并且更易于调试。所以请花时间重写它们。大约一年前,当我们从TestComplete/Javascript切换到Selenium/Java时,我做了类似的事情。我不得不学习Java并在Selenium中重写所有内容,但最终我对变化感到非常满意。拥有强类型语言,更好的IDE(Eclipse)等使我的工作效率更高,测试更快速,更具弹性,并且更易于维护和调试。

+0

原帖是写得很好的,但是,正如这个答案所述,最好重新做工作,而不是试图从'TestComplete'迁移到'Selenium'。另外,对于具体的OP,这**是你的答案。 – Brian

+0

谢谢,这是现在采取的方法。 – lw246