Как собрать воедино мои функции, убедившись, что переменная драйвера может использоваться всеми 3 - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...