250줄의selenium 코드를 알아보기 위해 멍청한 녀석이 무슨 짓을 했는지

250줄의selenium 코드를 알아보기 위해 멍청한 녀석이 무슨 짓을 했는지


selenium에 대한 완전한 강좌를 보려면 누르십시오. 모듈의 인용을 건너뛰고:
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
browser = webdriver.Chrome(chrome_options = chrome_options)

Chrome Options는 크롬 시작 시 속성을 구성하는 클래스입니다. 이 매개변수를 사용하여 다음과 같은 매개변수를 추가할 수 있습니다.
chrome 바이너리 파일 위치 설정(binary location) 시작 매개변수 추가(add argument) 확장 응용 프로그램 추가(add extension,add encoded extension) 실험 성격의 설정 매개변수 추가(add experimental option) 디버거 주소 설정(debugger address)
이 코드는 시작 매개변수(add argument)를 추가합니다.
–headless
구글 브라우저 헤더 없음 모드, 백엔드에서 실행, 브라우저 팝업 없음
–disable-gpu
GPU 가속 해제
같은 이치로, 다음 코드는 화호 브라우저를 설정하고 주소를 명확히 하였으며, Firefox 프로필을 fp로 간략하게 썼다
firefox_options = Options()
firefox_options.headless = True
browser = webdriver.Firefox(options = firefox_options)

왜 이 부분에 Firefox 설정을 새 이름의 임시 브라우저에 부여했다는 말이 있습니까?
temp_browser = webdriver.Firefox(options = firefox_options)

아래로:
browser.get(main_url)
browser.find_element_by_id('txtUserName').clear()
browser.find_element_by_id('txtUserName').send_keys('')
browser.find_element_by_id('txtPassword').clear()
browser.find_element_by_id('txtPassword').send_keys('')
browser.find_element_by_id('btnSignIn').click()

여기 브라우저는 크롬과 Firefox가 공용합니다.
find_element_by_id는 id를 통해 원소 찾기(원소 찾기), 브라우저에서find 찾기element_by_id 뒤에 괄호 따옴표 안에 있는 물건을 묶어서 진행합니다.뒷작업
여기에는 다음과 같은 8가지 요소가 배치됩니다.
id를 통해 요소 찾기
find_element_by_id(“id_vaule”)
name을 통해 요소 찾기
find_element_by_name(“name_vaule”)
tagname 위치 지정 요소
find_element_by_tag_name(“tag_name_vaule”)
class를 통해name 위치 지정 요소
find_element_by_class_name(“class_name”)
css를 통해 요소 찾기
find_element_by_css_selector()
xpath를 통해 요소 찾기
find_element_by_xpath(“xpath”)
링크를 통해 요소 찾기
find_element_by_link_text(“text_vaule”)
요소 포지셔닝 상세 정보 여기
이 코드의 뜻은 브라우저로 하여금 자동으로 텍스트가 UserName인 부분을 찾게 하고, 비우고, 아날로그 키보드로 빈칸을 읽게 하고, Password 부분은 같은 이치로 하고, 마지막으로 BTN 형식 (button과 관련된 형식) 의signIn을 누르는 것이다.
이후:
with open('test.html', 'w') as file:
    file.write(browser.page_source.encode('utf-8'))

덮어쓰기 모드로 테스트라고 열 수 있습니다.html 파일은python에서 open () 와 with open () as file의 차이를 설명한 다음에 이 파일에 UTF-8 인코딩 모드로 웹 소스 코드 (page source) 를 기록합니다.
이후:
links = browser.find_elements_by_tag_name('small')
for link in links:
    if "    " in link.text.encode('utf-8'):
        print link.text

links = browser.find_elements_by_tag_name('span')
for link in links:
    if "         " in link.text.encode('utf-8'):
        print link.text

browser.quit()

"small"이라는 이름의 태그를 찾아 목록에 저장* (목록입니까???)*안에 만약에utf-8 인코딩으로 환영한다는 글자가 존재한다면 환영합니다.txt 포맷을 출력해서 어디에 출력할까요 야옹야옹?
뒷도리
마지막으로 브라우저 닫기
이후:
browser.get(main_url + "/Application/ApplicationList.aspx")
#browser.find_element_by_id('ContentPlaceHolder1_chkProjectStatus_23').click()
browser.find_element_by_id('ContentPlaceHolder1_chkProjectType_0').click()

#browser.find_element_by_id('ContentPlaceHolder1_txtPageSize').send_keys(100)
browser.find_element_by_id('ContentPlaceHolder1_btnSearch').click()

첫마디: 브라우저가 웹 주소를 읽고mainUrl의 웹 주소를 얻었고 뒤에'/Application/ApplicationList.aspx'(하위 항목에 들어갔음) 주석을 달았다.aspx는 동적 웹 파일 형식입니다
이후 두 줄은 주석이 떨어졌는데, 실제로 이 코드는 두 번의 원소 검색을 진행하였으며, 그로 하여금 자동으로 두 번 클릭하게 하였다.
try:
    link = "http://10.5.64.32/JudgeManage/AssessmentAuditEdit.aspx?f3qWWG4YWJNIobR6hnKu0jZfy1lcQqsxUcfTGFEnWsPSMMBvftHT0esfZQB7%2bbfo"
    #link = "http://10.5.64.32/JudgeManage/AssessmentAuditEdit.aspx?f3qWWG4YWJNIobR6hnKu0tQPMdsMRb9RLY4vfbjEu36uPFbwN1EjgVrJW5DmSYTj"
    browser.get(link)

    browser.find_element_by_id('ui-id-5').click()
    links = browser.find_elements_by_partial_link_text("    ")
    for link in links :
        pdf_link = link.get_attribute('href')
        command = "curl -O " + link
        os.system(command)
except:
    pass

이 부분은 이상 처리를 사용했습니다. 이상이 발생하면 이 부분을 건너뛰고 이상이 없으면 정상적으로 진행됩니다. 브라우저는 자동으로 웹 주소를 읽고 브라우저는 요소를 검색하며 ui-id-5를 찾고 클릭하십시오.브라우저는 링크 텍스트 모호 포지셔닝 요소 검사 보고서를 통해 목록에 저장합니다. (목록입니까?)이 목록을 다시 훑어보고 "href"속성을 포함하는 요소를 찾아 pdf 에 저장합니다link에서 os를 호출합니다.시스템 라이브러리 함수는command를 실행하고 모든 링크를 시스템의 파일로 다운로드합니까?
이후:
page_status = browser.find_element_by_id('ContentPlaceHolder1_psApplication_lblPageStatus').text
page_status_string_list = page_status.split(' ')
page_status_string = page_status_string_list[-2]
page_num_string_list = page_status_string.split('/')
page_total = int(page_num_string_list[-1])

브라우저로 "ContentPlaceHolder1"찾기psApplication_lblPageStatus',text 형식으로 저장하고 빈칸을 로고로 이 문서를 분할하여 목록으로 저장하고 인덱스 목록에서 두 번째 요소를 저장한다. 저장한 다음에 이 부분을'/'를 로고로 분할하여 새로운 목록을 형성하고 이 새로운 목록의 마지막 요소를 정형으로 변환하여 페이지에 저장한다total
이후:
program_links = []
program_num = 0
print "page_total :" + str(page_total)
for page_index in range(0, page_total):
    page_index += 1
    print "page_index :" + str(page_index)
    browser.find_element_by_id('ContentPlaceHolder1_psApplication_txtGotoPage').clear()
    browser.find_element_by_id('ContentPlaceHolder1_psApplication_txtGotoPage').send_keys(str(page_index))
    browser.find_element_by_id('ContentPlaceHolder1_psApplication_lbtnGoto').click()

    while True:
        try:
            time.sleep(1)
            page_status = browser.find_element_by_id('ContentPlaceHolder1_psApplication_lblPageStatus').text
            page_status_string_list = page_status.split(' ')
            page_status_string = page_status_string_list[-2]
            page_num_string_list = page_status_string.split('/')
            page_cur = int(page_num_string_list[0])
            if page_cur == page_index:
                break
        except:
            pass

    table_tr_list = browser.find_element_by_id('systemData').find_elements_by_tag_name("tr")
    for tr in table_tr_list:
        table_td_list = tr.find_elements_by_tag_name("td")
        if len(table_td_list) == 14 and table_td_list[10] != "" and table_td_list[12].text.encode('utf-8') == "   ":
            print tr.text + "
" link = table_td_list[10].find_elements_by_tag_name("a")[0].get_attribute('href') program_links.append(link) program_num += 1 print program_num

빈 목록 만들기 프로그램links programe_num을 0으로 초기화하여 페이지 인쇄total
이후 for 순환에 들어가 0에서 페이지로 이동total 사이의 정수, 페이지로 저장index, 인쇄 페이지index, 이후 세 차례 원소 검색, 상응하는 곳에서 각각 비우기, 아날로그 키보드 입력 페이지index 값, 클릭...
다음 while 사이클(Tier 2 사이클):
이 부분은 이상 처리를 사용했습니다. 이상이 발생하면 이 부분을 건너뛰고 이상이 없으면 정상적으로 진행됩니다. 1초 휴면 후 브라우저로'ContentPlaceHolder1psApplication_lblPageStatus',text 형식으로 저장하고 빈칸을 로고로 이 문서를 분할하여 목록으로 저장하고 색인 목록에서 두 번째 요소를 저장하여 저장하고 이 부분을'/'를 로고로 분할하여 새로운 목록을 형성하고 이 새로운 목록의 첫 번째 요소를 정형으로 변환하여 페이지에 저장합니다cur, 페이지cur == page_index,while 순환을 종료합니다
2층 순환이 끝난 후 브라우저로 id로 요소'시스템데이터'를 포지셔닝하고 tagname 포지셔닝 요소'tr'를 목록에 저장하고 이 목록을 옮겨다니며 이 목록에 있는 모든 요소를tagname 포지셔닝 요소 'td' (여기 포지셔닝 요소가 되돌아오는 것은 무엇입니까? 목록에 저장된 것은qaq입니까?)목록에 저장합니다.만약 목록의 길이가 14와 동시에 11번째 요소가 비어 있지 않고 13번째 요소의utf-8 인코딩이 이미 발증되었다면 텍스트 형식으로'tr'를 인쇄하고 td 요소가 형성한 그 목록의 11번째 요소에서'a'가 형성한 목록의 첫 번째 요소에서'href'의 속성(??)을 찾습니다.링크에 저장하고 링크 요소를 프로그램에 삽입합니다links 목록의 맨 뒤, 프로그램num 더하기 1, 마지막 인쇄 프로그램num
이후:
pdf_num = 0
for link in program_links:
    try:
        browser.get(link)
        browser.find_element_by_partial_link_text('     ').click()
        links = browser.find_elements_by_partial_link_text("    ")
        for link in links :
            pdf_link = link.get_attribute('href')
            command = "curl -O " + pdf_link
            os.system(command)
            pdf_num += 1
            print pdf_num
    except:
        pass

print pdf_num, program_num

pdf_num을 0 스트리밍 프로그램으로 초기화링크에 있는 모든 링크는 비정상적으로 처리됩니다. 오류가 발생하면 이 링크를 건너갑니다. 그렇지 않으면 브라우저에서 링크를 읽고partiallink_text 포지셔닝 원소 실험실 검측, 브라우저에서partiallink_text 포지셔닝 요소 검출 보고서, 링크 목록에 병존하여 순환을 하고 링크 안의 모든 요소 링크를 훑어보며'href'의 속성을 pdf 로 읽습니다link에서 os를 호출합니다.시스템 라이브러리 함수는command를 실행하고 모든 링크를 시스템의 파일로 다운로드합니까?pdf_num + 1 인쇄 pdfnum
이후:
for tr in table_tr_list:
    print tr.text
    table_td_list = tr.find_elements_by_tag_name("td")
    if len(table_td_list) == 14 and table_td_list[12].text.encode('utf-8') == "   ":
        print tr.text
        if table_td_list[10] != "":
            link = table_td_list[10].find_elements_by_tag_name("a")[0].get_attribute('href')
            print link
            break

이 코드는 위의 어느 단락과 유사하기 때문에 더 이상 군말하지 않습니다~~~
이후:
browser.find_element_by_id('ContentPlaceHolder1_txtEnterpriseName').clear()
a = '             '
a = a.decode('utf-8')
print a
browser.find_element_by_id('ContentPlaceHolder1_txtEnterpriseName').send_keys(a)
browser.find_element_by_id('ContentPlaceHolder1_btnSearch').click()

table_tr_list = browser.find_element_by_id("tbList").find_elements_by_tag_name("tr")
for tr in table_tr_list:
    print "a"
line = table_tr_list[0].find_elements_by_tag_name("td")

세 번째 줄은 utf-8의 인코딩 형식으로 문자열을 디코딩하는 것을 가리킨다. 자세한 내용은 Python decode () 방법 참조
뒤로: 미완성, 미완성.

좋은 웹페이지 즐겨찾기