У меня есть 3 функции. Логин, Контакты_объект и Объект_меню. Каков наилучший способ собрать их вместе, чтобы я мог их запустить. У меня проблемы с передачей драйвера переменной в функции Contacts_object и Object_menu, как это объявлено в Login.
Это 3 гнезда для петель. как только вы дойдете до конца 3-го цикла for, драйвер должен закрыться, и мы начнем снова со следующего входа в систему функции Login.
Я попытался поместить драйвер в отдельный файл .py и импортировать его. Однако это не работает.
def login(Test_Account, Password):
launch url
url = "XXXXXXXX"
for x, y in zip(Test_Account, Password):
driver = webdriver.Chrome()
driver.implicitly_wait(1)
driver.get(url)
username = driver.find_element_by_id("FORMLOGINid")
password = driver.find_element_by_id("FORMLOGINpwd")
username.send_keys(x)
password.send_keys(y)
python_button = driver.find_element_by_id('btSubmit') #
python_button.click() #click
driver.implicitly_wait(1)
def contacts_object(Open_Contacts):
for b in Open_Contacts:
##########################################################
python_menu_dropdown = driver.find_element_by_id('id_arrow_popup_menu')
python_menu_dropdown.click()
time.sleep(1)
############################################################################
python_menu_open = driver.find_element_by_id('id_popup_OPEN')
python_menu_open.click()
time.sleep(1)
x = driver.find_element_by_xpath(b)
x.click()
time.sleep(2)
search_contact = driver.find_element_by_id('id_searchfield')
search_contact.clear()
time.sleep(1)
search_contact = driver.find_element_by_id('id_searchfield')
search_contact.send_keys("Test, Acco")
time.sleep(1)
search_contact.send_keys(Keys.DOWN + Keys.ENTER)
time.sleep(5)
def object_menu(Profile, folders):
for z in folders:
drop_down = driver.find_element_by_id('folder_panels_arrow')
drop_down.click()
if z == len(folders):
break
#print(z)
try:
python_menu_open = driver.find_element_by_xpath(z)
driver.implicitly_wait(10)
if EC.element_to_be_clickable(z):
python_menu_open.click()
driver.implicitly_wait(20)
time.sleep(20)
page = driver.execute_script("return document.body.innerHTML").encode('utf-8') #returns the inner HTML as a string
soup = BeautifulSoup(page, 'html.parser')
soup = soup.prettify()
t = time.localtime()
timestamp = time.strftime('%b-%d-%Y_%H%M', t)
filepath = os.path.join("XXXXXXXXXXXXX")
time.sleep(5)
h = open(filepath, "w")
h.write(soup)
h.close()
except NoSuchElementException:
f = open(r'XXXXXXXXXXXXX')
f.write(str(Profile ) + " not there" +'\n')
f.close()
driver.close()