与find_element()方法一起使用时,加星标表达式如何工作

时间:2018-11-12 20:42:23

标签: python selenium selenium-webdriver

def enter_text_textbox(self, locator, text):
    ele = self.driver.find_element(*locator)
    try:
        logging.info("# Entering text in Textbox.")
        ele.clear()
        ele.send_keys(text)
        return True
    except NoSuchElementException:
        return False

这是方法enter_text_textbox,它接受定位符和一些文本作为参数。 我通过定位器是这样的:         self.email_field =(通过XPATH,“ // input [@ id ='email']”)

当我尝试进入this(self.driver.find_element(* locator))方法时,它显示了enter image description here

从图片开始,这些方法仅包含ID参数。

通过运行测试脚本(此处未显示),它可以很好地工作。 我想知道此方法如何知道此定位器是由XPATH还是ID或CSS制作的,即加星标的表达式如何工作?

2 个答案:

答案 0 :(得分:1)

self.driver.find_element(*locator)

分解为位置参数。因此locator[0] 必须是xpath,而locator[1]必须是另一个文本参数(显然是ID或CSS)

(当locator具有适当数量的参数时)等效于:

self.driver.find_element(locator[0],locator[1])

注意:

  • 以错误的顺序传递参数将失败。
  • 传递的参数过多或过多也会失败。

由于这不是可变参数函数,因此这是一种不好的做法,而且还不清楚。

答案 1 :(得分:0)

您所显示的图像显示PyCharm,告诉您默认情况下该方法使用的内容。如果您只是调用find_element(),它将使用By.ID作为by的值,并使用None作为value。正如让·弗朗索瓦·法布尔(Jean-FrançoisFabre)所说的,*只是将元组分解为位置参数