Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建Selenium模块以替换testcomplete_Python_Selenium_Automated Tests_Testcomplete - Fatal编程技术网

Python 创建Selenium模块以替换testcomplete

Python 创建Selenium模块以替换testcomplete,python,selenium,automated-tests,testcomplete,Python,Selenium,Automated Tests,Testcomplete,我正在尝试用Selenium来代替TestComplete进行自动化测试,理想情况下无需重新编写所有不同的函数 计划是复制别名结构,以便在TestComplete中查找元素,并提供一个python模块,该模块可用于查找web元素 我已经能够在一个页面上实现这一点,但由于python似乎是如何处理导入的,我至今还无法找到一种方法来导入超出此范围的内容 测试完成中的示例代码如下 别名.LoginPage.Username.SetText(“用户名”) 为了在selenium中复制这一点,我创建了一个

我正在尝试用Selenium来代替TestComplete进行自动化测试,理想情况下无需重新编写所有不同的函数

计划是复制别名结构,以便在TestComplete中查找元素,并提供一个python模块,该模块可用于查找web元素

我已经能够在一个页面上实现这一点,但由于python似乎是如何处理导入的,我至今还无法找到一种方法来导入超出此范围的内容

测试完成中的示例代码如下

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

为了在selenium中复制这一点,我创建了一个名为Alias的模块,其中有一个名为LoginPage的类,包含一个名为username的属性

因此Alias.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 not found exception”

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

我有没有办法告诉Python只为导入的类设置属性 或 对我来说,另一种构建项目的方法是复制在当前编码测试中发现元素的方式


或者,我是不是走错了路,应该开始修改当前的代码,我们必须针对硒元素

我不知道您所说的更改的规模,但我的猜测是,重写测试要比尝试编写代码更快(更好),这样您就不必进行更改。从长远来看,重写可能需要更少的维护,更容易调试。因此,请花时间正确地重写它们。大约一年前,当我们从TestComplete/Javascript切换到Selenium/Java时,我做了类似的事情。我必须学习Java并用Selenium重写所有内容,但最终我对这一变化感到非常高兴。有了强类型语言、更好的IDE(Eclipse)等等,我的工作效率更高,测试速度更快、更具弹性,更易于维护和调试。

最初的文章写得很好,但正如这个答案所说,最好只是重新做这项工作,而不是尝试从
TestComplete
迁移到
Selenium
。另外,对于OP,这是你的答案。谢谢,这是我们现在采取的方法。