-
Notifications
You must be signed in to change notification settings - Fork 0
/
login_1000.py
89 lines (67 loc) · 3.32 KB
/
login_1000.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
"""連續登入1000次"""
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
urls = [""]
s = Service(
r"C:\Users\rayli\Desktop\test\Lib\site-packages\chromedriver\chromedriver.exe"
)
#自訂的EC 算option數量
def select_has_expected_options_count(locator, expected_count):
def _predicate(driver):
select_element = driver.find_element(*locator)
option_elements = Select(select_element).options
return len(option_elements) == expected_count
return _predicate
for url in urls:
driver = webdriver.Chrome(service=s)
driver.get(url)
wait = WebDriverWait(driver, 10, 2)
wait.until(EC.url_matches("https://staging.hixcare.tw/login/signIn")) # 判断url是否存在
for i in range(1000):
#判断element(username、password、帳務時段)是否存在
wait.until(EC.visibility_of_element_located((By.ID, "username")))
wait.until(EC.visibility_of_element_located((By.ID, "password")))
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, r"#app>div>div>div:nth-child(2)>div>div:nth-child(4)>select")))
#帳務時段
expected_option_count = 3 # 設定期望的option數量
locator_select = (By.CSS_SELECTOR, r"#app>div>div>div:nth-child(2)>div>div:nth-child(4)>select")
wait.until(select_has_expected_options_count(locator_select, expected_option_count))
# 取得 id 為 ausername 的網頁元素 --> 使用者名稱( 請輸入員工工號 )
a = driver.find_element(
By.ID, "username")
# 取得 id 為 password 的網頁元素 --> 密碼
b = driver.find_element(By.ID, "password")
# 輸入帳密
#a.click()
a.send_keys("hixadmin")
b.send_keys("Hix1234")
# 登入按鈕
button = driver.find_element(
By.CSS_SELECTOR, r"#app > div>div:nth-child(1)>div:nth-child(2)>div>button"
)
button.click()
# 判断主頁url是否存在
wait.until(EC.url_matches("https://staging.hixcare.tw/dashboard"))
# 判断profile按鈕是否存在
locator_sysadmin = (By.CSS_SELECTOR, r'#app>div>div:nth-child(1)>div:nth-child(1)>div:nth-child(3)>div:nth-child(5)>button')
wait.until(EC.visibility_of_element_located(locator_sysadmin))
# profile按鈕
e=driver.find_element(*locator_sysadmin)
e.click()
locator_logout = (By.CSS_SELECTOR, r'#app>div>div>div>div:nth-child(3)>div:nth-child(5)>div:nth-child(2)>button:nth-child(5)')
# 判断登出按鈕是否存在
#locator_logout = (By.CSS_SELECTOR, r'#app > div > div.px-5.bg-gray-200.dark\:bg-gray-900.hix-header-v2-height > div.flex.justify-between.items-center > div.flex.justify-end.items-center > div:nth-child(5) > div > button.bg-gray-200.my-1.py-1.w-full.font-semibold.text-center.text-gray-800.rounded.hover\:bg-gray-300')
wait.until(EC.visibility_of_element_located(locator_logout))
# 登出
f=driver.find_element(*locator_logout)
f.click()
# 回到登入頁(判断登入頁url是否存在)
wait.until(EC.url_matches("https://staging.hixcare.tw/login/signIn"))
print(i)
time.sleep(10)
driver.quit()