Python Hot在另一个类方法中使用输出形式的一个类方法

时间:2018-02-28 00:56:50

标签: python function selenium methods

我有类方法generated_username,它生成字符串并返回该字符串,我需要在另一个方法new_full_list中使用此输出,但我运行整个方法而不仅仅是它的输出 这是我的代码:

class Users():

def generated_username(self, driver):
    username = driver.find_element_by_css_selector("[id=systemUser_employeeName_empName]").get_attribute('value')
    username = username.replace(' ', '').lower()
    username = username + ''.join(random.choice(string.digits) for i in range(3))
    return username

def new_full_list(self,driver):
    l = driver.find_elements_by_xpath("//*[@class='odd' or @class='even']/td[2]/a")
    l = [x.text for x in l]
    l.append(self.generated_username(driver))

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望在特定页面上调用generated_username,并生成一个字符串。 稍后,在另一个页面上,您希望在new_full_list中使用之前生成的字符串。

为此,您可以创建一个类变量来保存此字符串。

class Users():
    user_string = ""

然后,当在正确的页面上时(我不确定代码的其余部分是什么样的/如何控制流程/何时调用函数),请调用generated_username(driver)。 我们将修改generated_username以设置我们之前创建的类变量。

def generated_username(self, driver):
    ...
    <s>return username</s>
    this.user_string = username

稍后在其他页面上调用new_full_list(driver)时,您希望它使用此前一个值。我们可以这样做:

def new_full_list(self,driver):
    l = driver.find_elements_by_xpath("//*[@class='odd' or @class='even']/td[2]/a")
    l = [x.text for x in l]
    l.append(self.user_string)

现在,您在generated_username内拨打new_full_list,这意味着整个功能都在运行,包括find_element等。