python+selenium 웹 테스트 자동화 실현
오늘 코드를 좀 붙여서 나오는 김에 자동화 웹 테스트 프레임워크인selenium를 만들어 보세요. 정말 괜찮아요. 학습 원가가 높지 않아요. 하지만 일단 알게 되면 그가 정말 많은 것을 할 수 있다는 것을 알게 될 거예요.예를 들어 어떤 사이트의 노래 같은 것을 대량으로 다운로드하는 것은 너희들이 스스로 연구해라.
아래 코드에서 생략한 부분의 내용도 특별히 잘 쓴 것은 아니니 마음대로 보면 된다.
#coding=utf-8
import datetime
import time
import selenium
import sys
from selenium import webdriver
#
from selenium.webdriver.common.by import By
#
from selenium.webdriver.common.action_chains import ActionChains
#
from selenium.webdriver.common.keys import Keys
#
from selenium.webdriver.support.ui import WebDriverWait
#
from selenium.webdriver.support import expected_conditions as EC
def getNow():
dateStr = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') #
return str(dateStr)
selfChromeOptions = webdriver.ChromeOptions();
selfChromeOptions.add_argument('disable-infobars');
selfChromeOptions.add_argument("--start-maximized");
selfChromeOptions.add_argument('--kiosk');
driver = webdriver.Chrome(chrome_options=selfChromeOptions);
#try:
if True:
driver.get(true_url);
print("go into page ok");
if not test_prop:
driver.find_element_by_id('username').send_keys("");
driver.find_element_by_id('password').send_keys('');
driver.find_element_by_class_name("formsubmit_btn").click();
print("login ok");
time.sleep(3);
skip_task = False
target = -1
while True:
target = target + 1
driver.refresh()
time.sleep(3)
if target > 7:
break
ul = driver.find_element_by_xpath('//*[@id="workTree"]/ul');
li_list = ul.find_elements_by_tag_name('li');
for li in li_list:
if str(li.text).find('mlprice') == -1:
continue;
print(getNow(),' ',li.text)
if str(li.text).find('_' + str(target)) == -1:
continue;
time.sleep(1)
li.find_elements_by_tag_name('ins')[0].click()
time.sleep(1)
if True:
workUl = li.find_elements_by_tag_name('ul')
time.sleep(1)
workLi_list = workUl[0].find_elements_by_tag_name('li');
for workLi in workLi_list:
if str(workLi.text).find('snk_') == -1:
continue;
print(getNow(),' ',workLi.text,' ',target)
if skip_task and target == 4 and str(workLi.text).find('snk_price') == -1:
continue
else:
skip_task = False
workLi.find_elements_by_tag_name('a')[0].click();
running_task_div = driver.find_element_by_id('showRunning');
time.sleep(1)
per_running_task_div_list = running_task_div.find_elements_by_tag_name('div')
# ,
supplement = 1
while supplement > 0:
if supplement != 1:
print(getNow(),' ',supplement)
supplement = supplement - 1
tmp_supplement = supplement
for per_running_task_div in per_running_task_div_list:
if str(per_running_task_div.text).find('snkWk') == -1:
continue;
if str(per_running_task_div.get_attribute('class')) == 'message-list':
continue;
per_worker_switch = per_running_task_div.find_elements_by_tag_name('input')[0]
per_worker_switch_status = str(per_worker_switch.get_attribute('oldval'))
if per_worker_switch_status == 'false':
per_running_task_div_span = per_running_task_div.find_element_by_class_name('summary')
print(' ',per_running_task_div_span.text)
print(' ',per_worker_switch_status);
per_worker_switch.click();
supplement = supplement + 1
time.sleep(1)
if tmp_supplement == supplement:
supplement = supplement - 2
time.sleep(2)
time.sleep(5);
driver.quit();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.