''' Contributed by Lin Junhong et al. 2023-06.'''

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import UnexpectedAlertPresentException, NoAlertPresentException
import random, time
import string

# 初始化webdriver
# driver = webdriver.Remote('http://localhost:4444/wd/hub', DesiredCapabilities.CHROME)
# driver.implicitly_wait(10)
driver = webdriver.Chrome("C:\\Users\\12993\AppData\Local\Programs\Python\Python38\\chromedriver.exe")


def test_next_article():
    try:
        driver.get("http://118.25.96.118:90")
        assert 'English Pal -' in driver.page_source
        # login
        elem = driver.find_element_by_link_text('登录')
        elem.click()

        uname = 'abcdefg'
        password = 'abcdefg'
        elem = driver.find_element_by_id('username')
        elem.send_keys(uname)

        elem = driver.find_element_by_id('password')
        elem.send_keys(password)
        elem = driver.find_element_by_xpath('/html/body/div/button')  # 找到登录按钮
        elem.click()

        time.sleep(0.5)
        assert 'EnglishPal Study Room for ' + uname in driver.title
        for i in range(50):
            time.sleep(0.1)
            # 找到固定按钮
            elem = driver.find_element_by_xpath('//*[@id="load_next_article"]')
            elem.click()
    except Exception as e:
        print(e)


def test_local_next_article():
    try:
        driver.get("http://127.0.0.1:5000")
        assert 'English Pal -' in driver.page_source
        # login
        elem = driver.find_element_by_link_text('注册')
        elem.click()

        uname = 'abcdefg'
        password = 'abcdefg'
        elem = driver.find_element_by_id('username')
        elem.send_keys(uname)

        elem = driver.find_element_by_id('password')
        elem.send_keys(password)

        elem = driver.find_element_by_id('password2')
        elem.send_keys(password)

        time.sleep(0.5)

        elem = driver.find_element_by_class_name('btn')  # 找到提交按钮
        elem.click()
        time.sleep(0.5)
        try:
            WebDriverWait(driver, 1).until(EC.alert_is_present())
            driver.switch_to.alert.accept()
        except (UnexpectedAlertPresentException, NoAlertPresentException):
            pass

        time.sleep(0.5)
        assert 'EnglishPal Study Room for ' + uname in driver.title
        for i in range(50):
            time.sleep(0.1)
            # 找到固定按钮
            elem = driver.find_element_by_xpath('//*[@id="load_next_article"]')
            elem.click()
    except Exception as e:
        print(e)