如何将selenium python代码拆分为乘法函数

时间:2016-12-22 19:50:33

标签: python python-3.x selenium

我正在编写一个python程序,它将测试网站上的一些功能。它将登录到此站点,检查它的版本并对其进行一些有关站点版本的测试。我想为这个网站写几个测试,但很少有东西会重复,例如登录网站。

我尝试将我的代码拆分为函数,例如hue_login(),并在我需要登录到站点的每个测试中使用它。要登录网站,我使用selenium webdriver。因此,如果我将代码分成小函数并尝试在其他函数中使用它,我也使用selenium webdriver我最终得到两个浏览器窗口。一个来自我的hue_login()函数,其中函数登录我。第二个浏览器窗口,它在我登录到站点界面后尝试将url放在我想去的地方。当然,因为我没有登录到第二个浏览器窗口,所以网站不会显示,其他测试也会失败(来自第二个功能的测试)。

示例:

def hue_version():
    url = global_var.domain + global_var.about
    response = urllib.request.urlopen(url)
    htmlparser = etree.HTMLParser()
    xpath = etree.parse(response, htmlparser).xpath('/html/body/div[4]/div/div/h2/text()')
    string = "".join(xpath)

    pattern = re.compile(r'(\d{1,2}).(\d{1,2}).(\d{1,2})')
    return pattern.search(string).group()

hue_ver = hue_version()

print(hue_ver)

if hue_ver == '3.9.0':
    do something
elif hue_version == '3.7.0':
    do something else
else:
    print("Hue version not recognized!")


def hue_login():
    driver = webdriver.Chrome(global_var.chromeDriverPath)
    driver.get(global_var.domain + global_var.loginPath)
    input_username = driver.find_element_by_name('username')
    input_password = driver.find_element_by_name('password')
    input_username.send_keys(username)
    input_password.send_keys(password)

    input_password.submit()
    sleep(1)
    driver.find_element_by_id('jHueTourModalClose').click()


def file_browser():
    hue_login()
    click_file_browser_link = global_var.domain + global_var.fileBrowserLink
    driver = webdriver.Chrome(global_var.chromeDriverPath)
    driver.get(click_file_browser_link)

如何从file_browser()函数调用hue_login(),来自file_browser()的其余代码将在hue_login()打开的同一窗口中执行?

1 个答案:

答案 0 :(得分:0)

你走了:

driver = webdriver.Chrome(global_var.chromeDriverPath)

def hue_login():    
    driver.get(global_var.domain + global_var.loginPath)
    input_username = driver.find_element_by_name('username')
    input_password = driver.find_element_by_name('password')
    input_username.send_keys(username)
    input_password.send_keys(password)

    input_password.submit()
    sleep(1)
    driver.find_element_by_id('jHueTourModalClose').click()

def file_browser():
    hue_login()
    click_file_browser_link = global_var.domain + global_var.fileBrowserLink
    driver.get(click_file_browser_link)