我正在编写一个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()打开的同一窗口中执行?
答案 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)