python+selenium QQ 메 일 자동 전송 기능 구현
질문
계 정 비밀번호 로그 인 상 자 는 iframe 에 쓰 여 있 기 때문에 iframe 에 먼저 들 어가 야 아래 의 두 입력 상자 와 로그 인 단 추 를 찾 을 수 있 습 니 다.아래 그림 에서 iframe=login 을 볼 수 있 습 니 다.frame,우 리 는 driver.switch.to 를 사용 할 수 있 습 니 다.frame(“login_frame)iframe 에 들 어 갑 니 다.다음 두 입력 상자 와 로그 인 단 추 는 모두 id 속성 이 있 습 니 다.driver.find 만 사용 하면 됩 니 다.element_by_id("xxx")는 요 소 를 찾 을 수 있 습 니 다.
iframe 을 종료 하 세 요.그렇지 않 으 면 위치 추적 뒤의 모든 요소 가 실패 합 니 다(기억 하 세 요).iframe 을 종료 하면 driver.switch 를 쓸 수 있 습 니 다.to_default_content()로 이 루어 집 니 다.기호이 말 을 생략 하고 다음 요 소 를 찾 아 보 세 요.
홈 페이지 주의사항
홈 페이지 의 왼쪽 상단 에 있 는'편지 쓰기'단 추 를 누 르 면 요 소 를 볼 수 없습니다.첫 번 째 방법 은 페이지 의 다른 곳 에서 오른쪽 클릭 한 다음 요 소 를 보고 뷰 어 왼쪽 에 있 는 마우스 단 추 를 누 르 십시오.확인 할 수 있 습 니 다.두 번 째 방법 은'편지 쓰기'라 는 두 글자 에 따라 요 소 를 직접 찾 는 것 이다.우 리 는 이렇게 driver.findelement_by_link_text("편지 쓰기")
편지 페이지 주의사항
편지 페이지 는 모두 iframe 에 쓰 여 있 기 때문에 iframe 에 들 어가 서 받 는 사람의 입력 상 자 를 찾 아야 합 니 다.우 리 는 아래 페이지 코드 에서 class 의 값 을 볼 수 있 습 니 다.(유일한 것 이 아 닙 니 다)우리 의 상대 적 인 경로 의 모든 방법,driver.findelement_by_xpath("//*[@id=“toAreaCtrl”]//div[2]/input")。이렇게 하면 해결 할 수 있다.
글 아래 의 텍스트 상 자 는 네 가지 점 을 주의 하 십시오.첫 번 째,텍스트 상 자 는 iframe 에 있 습 니 다.두 번 째 는 텍스트 상자 에 속성 값 이 없 기 때문에 HTML 태그 이름 으로 찾 을 수 있 습 니 다.driver.findelement_by_tag_name(“body”);세 번 째 텍스트 상 자 는 먼저 클릭(click)하고 작성 해 야 합 니 다(sendkeys),먼저 클릭 하지 않 고 작성 하지 않 았 다 면 sendkeys("xxxx")내용 은 테마 뒤의 텍스트 상자 에 놓 입 니 다.네 번 째 는 iframe 을 탈퇴 하고 iframe="mainFrame"에 들 어 갑 니 다.탈퇴 하면 모든 iframe 이 탈퇴 하기 때 문 입 니 다.
전체 스 크 립 트
from selenium import webdriver
import unittest,time,traceback
from selenium.common.exceptions import TimeoutException,NoSuchElementException
class TestDemo(unittest.TestCase):
def setUp(self):
self.driver=webdriver.Firefox(executable_path='f:\\geckodriver')
def test_sendqqemail(self):
try:
url = 'https://mail.qq.com/'
self.driver.get(url)
self.driver.maximize_window()
self.driver.switch_to_frame("login_frame")
self.driver.find_element_by_id("u").send_keys(" ")
self.driver.find_element_by_id("p").send_keys(" ")
self.driver.find_element_by_id("login_button").click()
time.sleep(5)
self.driver.switch_to.default_content() # iframe,
self.driver.find_element_by_id('composebtn').click()
# iframe=mainFrame
self.driver.switch_to_frame("mainFrame")
time.sleep(3)
self.driver.find_element_by_xpath("//*[@id='toAreaCtrl']/div[2]/input").send_keys(" ")
#
self.driver.find_element_by_xpath('//input[@id="subject"]').send_keys(" ")
# iframe
self.driver.switch_to_frame(self.driver.find_element_by_class_name("qmEditorIfrmEditArea"))
#self.driver.find_element_by_xpath("/html/body").send_keys(' , ')
#
content=self.driver.find_element_by_tag_name("body")
# click(),
content.click()
content.send_keys(" ")
time.sleep(3)
self.driver.switch_to.default_content()
self.driver.switch_to_frame("mainFrame")
#
self.driver.find_element_by_xpath('//a[.=" "]').click()
except TimeoutException:
print(" ")
except NoSuchElementException:
print(" ",traceback.print_exc())
except Exception:
print(traceback.print_exc())
def tearDown(self):
self.driver.quit()
if __name__=="__main__":
unittest.main()
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.