【问题标题】:How to define a global method whose variables can be used in other methods in Python如何定义一个全局方法,其变量可以在 Python 中的其他方法中使用
【发布时间】:2018-01-05 04:13:50
【问题描述】:

我正在从事一个自动化项目。我正在自动化登录页面。我正在处理的网站中的登录页面存在问题,即我第一次登录时失败,即使凭据正确,然后如果我第二次登录就成功登录。所以,为了克服这个问题,我加入了一个尝试,除了方法。代码:

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 selenium selenium-webdriver automation


    【解决方案1】:

    Python 类有一个名为 __init__ 的构造函数,您可以在创建此类的对象时使用它来传递信息。像这样的东西,即使逻辑的分离不是最好的。但是让您对构造函数有所了解。

    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()
    

    【讨论】:

      猜你喜欢
      • 2022-11-15
      • 2022-01-19
      • 1970-01-01
      • 2019-01-15
      • 2018-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多