我做了一个方法来点击日历字段,然后选择日期,但是当我移动参数时,返回错误。
我的方法
def select_current_date(self, *locator1, *locator2):
self.driver.find_element(*locator1).click()
WebDriverWait(self.driver, AUTOCOMPLETE_TIMEOUT).until(
EC.visibility_of_element_located((By.CSS_SELECTOR, ".ui-icon.ui-icon-circle-triangle-w")))
self.driver.find_element(*locator2).click()
WebDriverWait(self.driver, AUTOCOMPLETE_TIMEOUT).until(
EC.invisibility_of_element_located((By.CSS_SELECTOR, ".ui-datepicker-title")))
传递参数
self.select_current_date(*EventsLocators.RECEIVED, *EventsLocators.CURRENT_DATE)
我的错误
E File "/Users/rafael/Desktop/projects/automated_tests/base.py", line 23
E def select_current_date(self, *locator1, *locator2):
E ^
E SyntaxError: invalid syntax
有什么想法吗?
干杯!
答案 0 :(得分:3)
您不需要(实际上是cannot do it this way)来解包参数,替换:
def select_current_date(self, *locator1, *locator2):
只是:
def select_current_date(self, locator1, locator2):
调用方法时,现在只需使用:
self.select_current_date(EventsLocators.RECEIVED, EventsLocators.CURRENT_DATE)
答案 1 :(得分:1)
如果您使用read the docs方法,则会看到:
find_element(by='id', value=None)
这意味着find_element
需要两个参数。我想出去试试EventsLocators.RECEIVED
是一个2元素的列表或元组。如果不是,那么这根本不会起作用。但您实际需要做的只是从函数定义和函数调用中删除*
:
def select_current_date(self, locator1, locator2):
self.driver.find_element(*locator1).click()
WebDriverWait(self.driver, AUTOCOMPLETE_TIMEOUT).until(
EC.visibility_of_element_located((By.CSS_SELECTOR, ".ui-icon.ui-icon-circle-triangle-w")))
self.driver.find_element(*locator2).click()
WebDriverWait(self.driver, AUTOCOMPLETE_TIMEOUT).until(
EC.invisibility_of_element_located((By.CSS_SELECTOR, ".ui-datepicker-title")))
thing_one = ['by', 'value']
thing_two = ['replace', 'these things']
self.select_current_date(thing_one, thing_two)
我不知道你传入的内容的细节,但它们必须是某种可迭代的,否则你的功能签名就不会匹配。
答案 2 :(得分:-3)
Python没有指针,所以你不需要*那里