包装Selenium“预期条件”Python
发布时间:2020-12-20 13:44:45 所属栏目:Python 来源:网络整理
导读:我正在尝试使用自定义函数创建自己的Selenium类,以便测试脚本在某些情况下会变得更直观和更健壮,至少我的口味.我目前的任务之一是包装所有Selenium预期条件(描述为 here),以便最终我将拥有一个看起来像这样的函数: def waitForElement(self,elementName,exp
我正在尝试使用自定义函数创建自己的Selenium类,以便测试脚本在某些情况下会变得更直观和更健壮,至少我的口味.我目前的任务之一是包装所有Selenium预期条件(描述为
here),以便最终我将拥有一个看起来像这样的函数:
def waitForElement(self,elementName,expectedCondition,searchBy) 哪里: elementName – 我要查找的元素的名称.那可能是id,name,xpath,css等…… expectedCondition – 这是设置Selenium预期条件的地方.这可以是:element_to_be_clickable,visibility_of_element_located等… 上面的函数在内部实现了标准的Selenium WebDriverWait,如下所示: try: if expectedCondition == "element_to_be_clickable": element = WebDriverWait(self.driver,defaultWait).until(EC.element_to_be_clickable((searchBy,elementName))) elif expectedCondition == "visibility_of_element_located": element = WebDriverWait(self.driver,defaultWait).until(EC.visibility_of_element_located((searchBy,elementName))) 一切都很好,但我将searchBy作为参数传递有点麻烦.提醒一下,searchBy可以是以下之一: By.ID By.NAME By.CLASS_NAME ... 当我从主代码中调用这个包装器函数时,我用下面的代码执行: self.waitForElement("elementName","element_to_be_clickable","By.NAME","test") 因此所有参数都作为字符串传递,除了searchBy部分之外的所有内容都很好. 所以我的问题是:如何将By.X部分作为参数传递给我的函数? 解决方法
在询问了
this问题之后,我最终能够解决这个问题.因此,为了获得所需的功能,上述方法将如下所示:
def waitForElement(self,searchBy): try: if expectedCondition == "element_to_be_clickable": element = WebDriverWait(self.driver,self.defaultWait).until(EC.element_to_be_clickable((getattr(By,searchBy),elementName))) elif expectedCondition == "visibility_of_element_located": element = WebDriverWait(self.driver,self.defaultWait).until(EC.visibility_of_element_located((getattr(By,elementName))) . . . 所以它可以像这样调用: self.waitForElement("elementName","NAME") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |