Exemplo n.º 1
0
def login_action(url):
    """

    :param url: login website
    :return:
    """
    driver = get_driver()
    driver.get(url)
    driver.find_element_by_css_selector("#login_field").clear()
    # username = str(input("Please enter your account: "))
    # password = str(input("please enter your password: "******"#login_field").send_keys(username)
    sleep(2)
    driver.find_element_by_css_selector("#password").clear()
    driver.find_element_by_css_selector("#password").send_keys(password)
    driver.find_element_by_xpath("//input[@name='commit']").click()

    # explicit wait
    element = WebDriverWait(driver, 20, 0.5).until(
        EC.presence_of_element_located(
            (By.XPATH, "//a[contains(text(),'Pull requests')]")))
    if element:
        print("Login successfully")
    sleep(3)

    # logout action
    # driver.find_element_by_xpath("//div[@class='Header-item position-relative mr-0']//span[@class='dropdown-caret']]").click()
    driver.find_element_by_xpath(
        "//header[@class='Header']/div[5]/details/summary").click()
    driver.find_element_by_xpath("//form[@class='logout-form']/button").click()
    # driver.find_element_by_xpath("//button[@class='dropdown-item dropdown-signout']").click()
    sleep(3)
    driver.close()
Exemplo n.º 2
0
def locate_id_name():
    """
    locate by id or name
    :return:
    """
    url = r'https://www.baidu.com'
    driver = get_driver()
    driver.get(url)
    # driver.find_element_by_id("kw").send_keys("Python")
    driver.find_element(By.ID, 'kw').send_keys("Python")
    sleep(2)
    # driver.find_element_by_id("kw").clear()
    driver.find_element(By.ID, "kw").clear()
    sleep(2)
    # driver.find_element_by_name("wd").send_keys("Selenium")
    driver.find_element(By.NAME, "wd").send_keys("Selenium")
    sleep(3)
    # driver.find_element_by_id("su").click()
    driver.find_element(By.ID, "su").click()
    # driver.find_element(By.CLASS_NAME, class_name).click()
    driver.find_element(By.ID, "su").click()
    # driver.find_element(By.CSS_SELECTOR, css_selector).click()
    # driver.find_element(By.XPATH, xpath_selector).click()
    # driver.find_element(By.LINK_TEXT, link_text).click()
    # driver.find_element(By.PARTIAL_LINK_TEXT, partial_link_text).click()
    sleep(3)
    driver.close()
Exemplo n.º 3
0
def mouse_action():
    """
    common mouse action
    :return:
    """
    url = r'https://www.baidu.com'
    driver = get_driver()
    driver.get(url)
    # maximize the windows
    driver.maximize_window()
    # get input element
    element = driver.find_element_by_css_selector('#kw')
    element.send_keys("Python")
    sleep(3)
    # double click the input
    ActionChains(driver).double_click(element).perform()
    sleep(2)
    ActionChains(driver).context_click(element).perform()
    # click
    ActionChains(driver).click(element).perform()

    element.click()
    setting = driver.find_element_by_css_selector('.pf')
    ActionChains(driver).move_to_element(setting).perform()
    sleep(3)
    ActionChains(driver).reset_actions()
    sleep(4)
    driver.close()
Exemplo n.º 4
0
def save_screen_shot():
    """

    :return:
    """
    picture_directory = r'F:\Testing_Development\UnittestProjects\automated_testing\automated_testing\webdriver_api_practice\screen_shot'
    url = "https://www.runoob.com/python/python-tutorial.html"
    driver = get_driver()
    driver.get(url)
    time.sleep(3)
    try:
        if not os.path.exists(picture_directory):
            os.makedirs(picture_directory)
            print("make directory successfully")
        else:
            print("directory exists")
    except BaseException as e:
        print(e)
    # stringify the local time stamp
    time_now = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime(time.time()))
    try:
        # method 2
        picture_status = driver.save_screenshot(picture_directory + '\\' +
                                                time_now + '.png')
        print(picture_status)
    except BaseException as e:
        print(e)
    time.sleep(2)
    driver.close()
    pass
Exemplo n.º 5
0
def locate_partial_link_text():
    """
    locate element by link text
    :return:
    """
    url = "https://www.51zxw.net/"
    driver = get_driver()
    driver.get(url)
    driver.find_element_by_partial_link_text("室内").click()
    sleep(3)
    driver.close()
Exemplo n.º 6
0
def basic_operation():
    """
    open、quit
    :return:
    """
    url = r'https://www.51zxw.net/Show.aspx?cid=615&id=60545'
    driver = get_driver()
    driver.get(url)
    sleep(3)
    print("current website title is:{}".format(driver.title))
    print("current website url is:{}".format(driver.current_url))
    driver.close()
Exemplo n.º 7
0
def locate_tag_name():
    """
    locate element by tag name
    :return:
    """
    url = r"https://www.51zxw.net/login"
    driver = get_driver()
    driver.get(url)
    driver.find_element_by_id("loginStr").send_keys("george")
    driver.find_element_by_name("pwd").send_keys("123456")
    driver.find_elements_by_tag_name("button")[0].click()
    sleep(3)
    driver.close()
Exemplo n.º 8
0
def locate_class_name():
    """
    locate element by class name
    :return:
    """
    url = r'https://www.baidu.com/'
    driver = get_driver()
    driver.get(url)
    driver.find_element_by_class_name("s_ipt").send_keys("Python")
    sleep(3)
    driver.find_element_by_id("su").click()
    sleep(3)
    driver.close()
Exemplo n.º 9
0
def explicit_wait_demo():
    """
    explicit wait demo
    :return:
    """
    url = r'https://www.baidu.com'
    driver = get_driver()
    driver.get(url)
    driver.find_element_by_css_selector("#kw").send_keys("Python")

    element = WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.ID, 'su')))
    element.click()
    sleep(3)
    driver.close()
Exemplo n.º 10
0
def locate_xpath():
    """
    locate by xpath
    :return:
    """
    url = r'https://www.baidu.com/'
    driver = get_driver()
    driver.get(url)
    # driver.find_element_by_xpath("//input[@id='kw']").send_keys("Python")
    driver.find_element_by_xpath("//input[@class='s_ipt']").send_keys("Python")
    sleep(3)
    # driver.find_element_by_xpath("//input[@id='su']").click()
    driver.find_element_by_xpath("//input[@value='百度一下']").click()
    sleep(3)
    driver.close()
Exemplo n.º 11
0
def upload_file_demo():
    """

    :return:
    """
    image_path = r'F:\Personal_Folder\Imagies\jiesi.png'
    url = r'https://www.baidu.com'
    driver = get_driver()
    driver.get(url)
    # locate upload button
    driver.find_element_by_xpath("//span[@class='soutu-btn']").click()
    sleep(2)
    driver.find_element_by_css_selector(".upload-pic").send_keys(image_path)
    sleep(10)
    driver.close()
Exemplo n.º 12
0
def locate_xpath_relative():
    """
    locate xpath
    :return:
    """
    url = r'https://www.51zxw.net/'
    driver = get_driver()
    driver.get(url)

    # driver.find_element_by_xpath("//div[@id='courseTypes']//div[2]/a[.='Windows']").click()
    driver.find_element_by_xpath(
        "//div[@id='courseTypes']/div/div/div[2]/a[.='Windows']").click()
    # logical combination positioning
    # driver.find_element_by_xpath("//div[@id='kw']"/input[@id='name' and @value='hello']).click()
    sleep(3)
    driver.close()
Exemplo n.º 13
0
def locate_id_name():
    """
    locate by id or name
    :return:
    """
    url = r'https://www.baidu.com'
    driver = get_driver()
    driver.get(url)
    driver.find_element_by_id("kw").send_keys("Python")
    sleep(2)
    driver.find_element_by_id("kw").clear()
    sleep(2)
    driver.find_element_by_name("wd").send_keys("Selenium")
    sleep(3)
    driver.find_element_by_id("su").click()
    sleep(3)
    driver.close()
Exemplo n.º 14
0
def locate_select():
    """
    locate select
    :return:
    """
    url = r'https://www.51zxw.net/'
    driver = get_driver()
    driver.get(url)
    # method 1use value
    driver.find_element_by_css_selector("[value='2']").click()
    # method2 use option
    driver.find_elements_by_tag_name('option')[1].click()
    # method 3
    select = Select(driver.find_element_by_css_selector("[name='cookieDate']"))
    select.select_by_index(1)
    select.select_by_value('2')
    select.select_by_visible_text("留两天")
Exemplo n.º 15
0
def login_action(url):
    """
    url:
    :return: driver with cookie data and path information
    """
    driver = get_driver()
    driver.get(url)
    username = str(input("Please enter your username:"******"Please enter your password:"******"#user_login").send_keys(username)
    sleep(2)
    driver.find_element_by_css_selector("#user_password").send_keys(password)
    sleep(2)
    driver.find_element_by_xpath(
        "//div[@class='git-login-form-fields']//input[@name='commit']").click(
        )
    sleep(3)

    element = WebDriverWait(driver, 10, 0.5).until(
        EC.presence_of_element_located(
            (By.XPATH,
             "//strong[@class='ml-1']//a[contains(text(),'thechorus')]")))
    cookies = driver.get_cookies()
    print(type(cookies))

    # define cookie directory
    cookie_directory = r'F:\Testing_Development\UnittestProjects\automated_testing\automated_testing\webdriver_api_practice\cookie_data'
    try:
        if not os.path.exists(cookie_directory):
            os.makedirs(cookie_directory)
            print("make directory successfully")
        else:
            print("directory exists")
    except BaseException as e:
        print(e)

    with open(cookie_directory + '\\' + "gitee.json", 'w') as f:
        # change the json object to json object and write to file
        json.dump(cookies, f)
    element.click()

    sleep(3)
    # driver.close()
    return driver
Exemplo n.º 16
0
def multi_windows_switch():
    """

    :return:
    """
    url = r'https://www.51zxw.net/List.aspx?cid=615#!fenye=4'
    driver = get_driver()
    driver.get(url)
    # get current page handle
    handle_current = driver.current_window_handle

    driver.find_element_by_partial_link_text("4-27 文件").click()
    sleep(3)
    # switch to before page by handle
    driver.switch_to.window(handle_current)
    sleep(3)
    driver.find_element_by_xpath("//a[contains(text(),'4-25')]").click()
    sleep(2)
    driver.close()
Exemplo n.º 17
0
def scroll_bar_controller():
    """
    use js to handle the scroll bar
    :return:
    """
    driver = get_driver()
    url = r'https://www.51zxw.net/'
    driver.get(url)
    sleep(2)

    # to drag the scroll bar to bottle
    js = "var action=document.documentElement.scrollTop=10000"
    driver.execute_script(js)

    sleep(3)
    js = "var action=document.documentElement.scrollTop=0"
    driver.execute_script(js)
    sleep(2)

    driver.close()
Exemplo n.º 18
0
def frame_nested_demo():
    """

    :return:
    """
    # url = r"http://localhost:63342/automated_testing/automated_testing/webdriver_api_practice/frame_demo.html?_ijt=uqnkn02h3irc5mljmqut1s5k38"
    url = r'F:\Testing_Development\UnittestProjects\automated_testing\automated_testing\webdriver_api_practice\frame_demo.html'
    driver = get_driver()
    driver.get(url)

    # use iframe id to switch
    # driver.switch_to_frame("search")
    driver.switch_to.frame("search")

    # operation in iframe
    driver.find_element_by_css_selector("#query").send_keys("Python")
    sleep(2)
    driver.find_element_by_css_selector("#stb")
    sleep(3)
    driver.close()
Exemplo n.º 19
0
def implicit_wait_demo():
    """
    implicit wait wait for all the web page
    :return:
    """
    url = r"https://www.baidu.com"
    driver = get_driver()
    driver.get(url)
    # set driver wait 5 seconds for all the page elements
    driver.implicitly_wait(5)

    try:
        driver.find_element_by_css_selector("#kw").send_keys("Python")
        driver.find_element_by_css_selector("#su").click()
    except NoSuchElementException as e:
        print(e)
    finally:
        print("Process finished!")
    sleep(3)
    print(driver.title)
    driver.close()
Exemplo n.º 20
0
def locate_css():
    """
    locate css
    :return:
    """
    url = r"https://www.baidu.com"
    driver = get_driver()
    driver.get(url)
    # locate by id
    driver.find_element_by_css_selector("#kw").send_keys("Python")
    sleep(3)
    # locate by class
    driver.find_element_by_css_selector(".s_ipt").send_keys("Hello")
    sleep(2)
    # locate by property
    driver.find_element_by_css_selector("#su").click()
    # css locator use > to differentiate hierarchy to property behind node like form#loginForm
    driver.find_element_by_css_selector("form#loginForm>ul>input").send_keys(
        "Hello")
    sleep(3)
    driver.close()
Exemplo n.º 21
0
def cookie_handler():
    """

    :return:
    """
    driver = get_driver()
    url = r"https://www.51zxw.net/Show.aspx?cid=615&id=60850"
    driver.get(url)
    cookie = driver.get_cookies()
    sleep(3)
    print(cookie)
    cookie_directory = r'F:\Testing_Development\UnittestProjects\automated_testing\automated_testing\webdriver_api_practice\cookie_data'
    with open(cookie_directory + '\\' + ".51zxw_json.json", 'w') as f:
        # change the json object to json object and write to file
        json.dump(cookie, f)
        # f.write(json.dumps(cookie))
    print(type(cookie))
    for item in cookie:
        print("name is {} and value is {}".format(item['name'], item['value']))
    sleep(3)
    # add cookie
    driver.add_cookie({'name': '51zxw', 'value': 'www.51zxw.com'})
    driver.get(url)
    driver.close()
Exemplo n.º 22
0
def pop_up_windows_handle():
    """

    :return:
    """
    url = r'https://www.baidu.com'
    driver = get_driver()
    driver.get(url)

    driver.find_element_by_link_text("设置").click()
    # todo : why this lose efficacy with name location
    # driver.find_element_by_name("tj_settingicon").click()
    sleep(2)
    # thought we can't find this element in web page content but we can still operate it with location
    driver.find_element_by_link_text("搜索设置").click()
    sleep(2)
    driver.find_element_by_link_text("保存设置").click()
    sleep(2)

    # initialize  a alert object
    alert = driver.switch_to.alert
    alert.accept()
    sleep(3)
    driver.close()
Exemplo n.º 23
0
def keyboard_action():
    """
    common keyboard action
    :return:
    """
    url =r"https://www.baidu.com"
    driver = get_driver()
    driver.get(url)
    driver.find_element_by_css_selector("#kw").send_keys("Python")
    print(driver.title)
    sleep(2)
    # simulate keyboard action CTRL + A
    driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL, 'a')

    driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL, 'c')

    url = r'https://www.sogou.com/'
    driver.get(url)
    driver.find_element_by_css_selector(".sec-input").send_keys(Keys.CONTROL, 'v')
    sleep(3)
    driver.find_element_by_css_selector("#stb").click()
    print(driver.title)
    sleep(3)
    driver.close()
Exemplo n.º 24
0
 def setUp(self):
     self.driver = get_driver()
     url = r'https://www.baidu.com'
     self.driver.implicitly_wait(5)
     self.driver.get(url)
Exemplo n.º 25
0
        self.driver.find_element_by_css_selector("#login_field").send_keys(username)
        sleep(2)
        self.driver.find_element_by_css_selector("#password").clear()
        self.driver.find_element_by_css_selector("#password").send_keys(password)
        self.driver.find_element_by_xpath("//input[@name='commit']").click()

        # explicit wait
        element = WebDriverWait(self.driver, 20, 0.5).until(
            EC.presence_of_element_located((By.XPATH, "//a[contains(text(),'Pull requests')]")))
        if element:
            print("Login successfully")

    def user_logout(self):
        # logout action
        # driver.find_element_by_xpath("//div[@class='Header-item position-relative mr-0']//span[@class='dropdown-caret']]").click()
        # todo: to locate the summary the xpath path is incorrect
        self.driver.find_element_by_xpath("//header[@class='Header']/div[5]/details/summary[1]").click()
        self.driver.find_element_by_xpath("//form[@class='logout-form']/button").click()
        # driver.find_element_by_xpath("//button[@class='dropdown-item dropdown-signout']").click()
        sleep(3)
        self.driver.close()


if __name__ == "__main__":
    url = r'https://github.com/login'
    driver = get_driver()
    # login and logout share the same driver
    login_handler = Login(driver, url)
    login_handler.user_login()
    login_handler.user_logout()
Exemplo n.º 26
0
def add_cookie(driver, url):
    """
    get cookie data from driver with cookies
    :param url:
    :param driver: if not with this driver domain would be make no sense
    :return:
    """
    driver = get_driver()
    driver.get(url)
    json_path = r'F:\Testing_Development\UnittestProjects\automated_testing\automated_testing\webdriver_api_practice\cookie_data\gitee.json'
    with open(json_path, 'r') as f:
        cookie_data = json.load(f)
        # print(type(cookie_data))
        # print(cookie_data)
    for item in cookie_data:
        driver.add_cookie({
            'domain': item['domain'],
            'httpOnly': item['httpOnly'],
            'name': item['name'],
            'path': item['path'],
            'secure': item['secure'],
            'value': item['value']
        })
    driver.get(url)

    # without account and password we can login the website  but we need to know we need the same driver
    driver.refresh()
    try:
        element = WebDriverWait(driver, 10, 0.5).until(
            EC.presence_of_element_located(
                (By.XPATH,
                 "//strong[@class='ml-1']//a[contains(text(),'thechorus')]")))
        if element:
            print("Login success with account!")
        else:
            print("Login failed!")
    except BaseException as e:
        print(e)

    # screen shot
    picture_directory = r'F:\Testing_Development\UnittestProjects\automated_testing\automated_testing\webdriver_api_practice\screen_shot'
    try:
        if not os.path.exists(picture_directory):
            os.makedirs(picture_directory)
            print("make directory successfully")
        else:
            print("directory exists")
    except BaseException as e:
        print(e)
    # stringify the local time stamp
    time_now = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime(time.time()))
    try:
        # method 1
        picture_status = driver.get_screenshot_as_file(picture_directory +
                                                       '\\' + time_now +
                                                       '.png')
        if picture_status:
            print("screen shot successfully!")
    except BaseException as e:
        print(e)
    driver.close()