Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何定义其变量可用于Python中其他方法的全局方法_Python_Selenium_Selenium Webdriver_Automation - Fatal编程技术网

如何定义其变量可用于Python中其他方法的全局方法

如何定义其变量可用于Python中其他方法的全局方法,python,selenium,selenium-webdriver,automation,Python,Selenium,Selenium Webdriver,Automation,我在做一个自动化项目。我正在自动登录页面。我正在使用的网站中的登录页面存在问题,即,即使凭据正确,第一次登录时也会失败,如果第二次登录,则会成功登录。所以,为了克服这个问题,我加入了一个尝试,除了方法。守则: driver=webdriver.Chrome("C:\\temp\\chromedriver.exe") url = 'site-address' driver.get(url) driver.maximize_window() wait = WebDriverWait(driver,

我在做一个自动化项目。我正在自动登录页面。我正在使用的网站中的登录页面存在问题,即,即使凭据正确,第一次登录时也会失败,如果第二次登录,则会成功登录。所以,为了克服这个问题,我加入了一个尝试,除了方法。守则:

driver=webdriver.Chrome("C:\\temp\\chromedriver.exe")
url = 'site-address'
driver.get(url)
driver.maximize_window()
wait = WebDriverWait(driver, 120)

class Demo
    def func1()
        user=driver.find_element_by_xpath("//")
        user.send_keys('Name')
        pas = driver.find_element_by_xpath("//")
        password.send_keys('pas')
        btn = driver .find_element_by_xpath("//")
        btn.click()

        try:
            chk=wait.until(EC.presence_of_element_located((By.ID, 'lop')))
            assert check.text == "Some Text"
            print('PAGE VERIFIED : ', check.text)
        except:
            print('LOGIN UN-SUCCESSFUL')
            print('Re-Trying...')
            user=driver.find_element_by_xpath("//")
            user.send_keys('Name')
            pas = driver.find_element_by_xpath("//")
            pas.send_keys('pas')
            btn = driver .find_element_by_xpath("//")
            btn.click()

因此,正如您所看到的,我正在重复输入用户名、密码和单击两次的过程,一次在开头,然后在except块中重复相同的过程。我的问题是,如何创建一个方法,调用它setup(),这样我就可以在setup()中初始化驱动程序、URL、用户名和密码。然后在func1()中调用该方法,然后在except块中调用。我是Python新手,不熟悉如何返回值。

Python类有一个名为
\uuuu init\uuuu
的构造函数,您可以在创建此类对象时使用该构造函数将信息传递给它。像这样,即使逻辑的分离不是最好的。但是给你一个构造器的概念

class Demo:

    def __init__(self, driver, url, username, password):
        """ Constructor of our demo class, set local variables"""
        self.driver = driver
        self.username = username
        self.password = password
        self.driver.get(url)
        self.driver.maximize_window()
        self.wait = WebDriverWait(self.driver, 120)

    def func1(self, attempt=1):
        """ Find elements in the opened page and send username and pasword,
        then clikc the button (submit?) """
        user = self.driver.find_element_by_xpath("//")
        user.send_keys(self.username)
        pas = driver.find_element_by_xpath("//")
        pas.send_keys(self.password)
        btn = driver .find_element_by_xpath("//")
        btn.click()

        try:
            # Wait for element
            chk = self.wait.until(EC.presence_of_element_located((By.ID, 'lop')))
            assert chk.text == "Some Text"
            print('PAGE VERIFIED : ', chk.text)
        except:
            # General exception ..
            if attempt >= 3: # Start with 1.. so 1, 2, 3.
                print("FAILED THREE TIMES, GIVING UP")
            else:
                print('LOGIN UN-SUCCESSFUL')
                print('Re-Trying...')
                self.func1(attempt + 1)


if __name__ == '__main__':
    driver = webdriver.Chrome("C:\\temp\\chromedriver.exe")
    url = 'site-address'
    TEST = Demo(driver=driver, url=url, username='Name', password='pas')
    TEST.func1()

Python类有一个名为
\uuuu init\uuu
的构造函数,在创建此类的对象时,可以使用该构造函数将信息传递给它。像这样,即使逻辑的分离不是最好的。但是给你一个构造器的概念

class Demo:

    def __init__(self, driver, url, username, password):
        """ Constructor of our demo class, set local variables"""
        self.driver = driver
        self.username = username
        self.password = password
        self.driver.get(url)
        self.driver.maximize_window()
        self.wait = WebDriverWait(self.driver, 120)

    def func1(self, attempt=1):
        """ Find elements in the opened page and send username and pasword,
        then clikc the button (submit?) """
        user = self.driver.find_element_by_xpath("//")
        user.send_keys(self.username)
        pas = driver.find_element_by_xpath("//")
        pas.send_keys(self.password)
        btn = driver .find_element_by_xpath("//")
        btn.click()

        try:
            # Wait for element
            chk = self.wait.until(EC.presence_of_element_located((By.ID, 'lop')))
            assert chk.text == "Some Text"
            print('PAGE VERIFIED : ', chk.text)
        except:
            # General exception ..
            if attempt >= 3: # Start with 1.. so 1, 2, 3.
                print("FAILED THREE TIMES, GIVING UP")
            else:
                print('LOGIN UN-SUCCESSFUL')
                print('Re-Trying...')
                self.func1(attempt + 1)


if __name__ == '__main__':
    driver = webdriver.Chrome("C:\\temp\\chromedriver.exe")
    url = 'site-address'
    TEST = Demo(driver=driver, url=url, username='Name', password='pas')
    TEST.func1()