我正在尝试用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只设置要导入的类的属性 或 对我来说,构建项目的另一种方法是复制在当前编码测试中发现元素的方式?你知道吗
或者,我是不是走错了路,我应该开始修改当前的代码,我们必须是特定于硒的?你知道吗
我不知道您所说的更改的规模,但我的猜测是,重写测试比尝试编写代码更快(更好),这样您就不必进行更改。从长远来看,重写可能需要较少的维护,并且更容易调试。所以花点时间好好重写一下。大约一年前,当我们从TestComplete/Javascript切换到Selenium/Java时,我做了类似的事情。我不得不学习Java并用Selenium重写所有的东西,但最后我真的对这一变化感到高兴。拥有强类型语言、更好的IDE(Eclipse)等使我的工作效率更高,测试速度更快、更具弹性,更易于维护和调试。你知道吗
相关问题 更多 >
编程相关推荐