创建Selenium模块以替换testcomp

2024-09-27 09:23:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用Selenium替换TestComplete来进行自动化测试,理想情况下不必重新编写所有不同的函数。你知道吗

计划是复制Aliases结构,以便在TestComplete中查找元素,并使用python模块完成查找web元素。你知道吗

我已经能够在一个页面上实现这一点,但是由于python似乎是如何处理导入的,所以到目前为止,我还没有找到一种方法来导入更多的内容。你知道吗

testcomplete中的示例代码是。你知道吗

你知道吗别名.LoginPage.Username.SetText(“用户名”)

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

所以呢别名.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代码,则会得到一个“element not found exception”

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

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

或者,我是不是走错了路,我应该开始修改当前的代码,我们必须是特定于硒的?你知道吗


Tags: 模块方法代码import元素属性seleniumusername
1条回答
网友
1楼 · 发布于 2024-09-27 09:23:08

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

相关问题 更多 >

    热门问题