我有一个关于Python语法的问题,没有在google上找到:/
我试图写一个通用函数,用于在Selenium上搜索定位器
我在locators.py中有定位器,它们看起来像这样:
class LoginForm:
email = {'css': '#email'}
password = {'css': ' #password'}
login_button = {'css': '#submitLoginForm'}
在base_page.py中,我有:
def __unify_locator(self,selector: dict):
elif 'css' in selector.keys():
return (By.CSS_SELECTOR,selector['css'])
def __element(self, selector: dict, index: int):
return self.driver.find_elements((self.__unify_locator(selector)))[index]
如您所见,我试图从__unify_locator
返回类似(By.CSS_SELECTOR,selector['css'])
的内容。我想让它变得灵活,因为将来我可以使用XPath、链接文本或e.t.c
是否可以像这样返回值?如果我在执行那部分代码时出错
是的,您可以像这样返回一个元组。错误不是因为返回,而是因为您如何使用它。要将元组中的值作为参数分离到另一个函数,请使用splat运算符
*
:一个建议:您可以直接将选择器成对写入:
那么您根本不需要
__unify_locator()
:或者,您的选择器可以是dict,为每个值的含义提供上下文:
然后使用
**
代替*
:最后,没有
if
就不能有elif
,但我认为您只是没有在__unify_locator()
中发布一些代码您的问题很可能只是使用了
elif
而不是if
。我不知道你的其他设置,但如果你这样做,它可能会工作而不是使用
elif
elif
是else if的缩写。它位于不同的if语句之后,并且只有在前一个if
条件的计算结果为false时才会被检查。因为这里只测试一个条件,所以应该使用if
既然您说您希望将来具有灵活性,那么您的下一个条件可以使用
elif
,并且如果它们的条件为true,则输入该条件,如果上面的条件为false,则输入该条件相关问题 更多 >
编程相关推荐