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