noções básicas de programação Python: + python selênio alcançar caixa de correio de destino QQ automático e função mail send

Este artigo descreve o artigo de selênio + python caixa de correio de destino QQ automático e-mail de envio para compartilhar com código de exemplo completa, amigos precisam pode referir-se
o selênio atual fazer um exemplo detalhado, vou encontrar no elemento de posicionamento alguns de obstrução e experiência para outros.
(Navegador Chrome)
(necessário apenas se o código completo final, por favor, vá diretamente para o artigo anterior)

Browser aberto QQ URL de login caixa de correio

QQ-mail login: https: //mail.qq.com/

from selenium import webdriver
import time
zhengyi = webdriver.Chrome()
zhengyi.get('https://mail.qq.com/')

Este passo não está com problemas a respeito de porque biblioteca de tempo de importação, continua a dizer.

Elemento de posicionamento, número de conta QQ QQ e entrada de senha
manualmente na página de login QQ-mail, pressione F12 para abrir as ferramentas de desenvolvedor, clique em Exibir elemento, selecione o elemento: Aqui Insert Picture Descrição
você pode ver a caixa de entrada da conta id QQ, nome e outros atributos, estão diretamente tomar para escolher uma boa localização.
Eu escolhi aqui método XPath mais comum para localizar, id = 'u' e digite a conta QQ com um evento send
(também pode ser usado para localizar zhengyi.find_element_by_id ( 'u'), código mais claro, mas eu pessoalmente utilizado para adotar um xpath comum ) zhengyi.find_element_by_xpath('//*[@id="u"]').send_keys("XXXXXXXXX")
da mesma forma, ID QQ senha elemento atributo = 'p', o mesmo método de posicionamento

zhengyi.find_element_by_xpath('//*[@id="p"]').send_keys("XXXXXXXX")

Em seguida, a mesma forma, o botão de login elemento de atributo id = 'login_button', não há necessidade de enviar informações, por isso optei por clique clique evento

zhengyi.find_element_by_xpath('//*[@id="login_button"]').click()

Bem, em princípio, até agora, PyCharm executado deve ser capaz de inserir o número da conta e senha e login com sucesso.
mas as coisas não são tão simples, após a execução de descoberta, erro de selênio, não consegue encontrar os elementos id u.

Já esteve em observação cuidadosa, encontramos um quadro de página aninhados em jogo.
Podemos entender que cada página é um pai do quadro, desde o início da nossa visita a este site, ele entrou no assentamento quadro pai. Como o nome sugere, tem um pai que é criança. quadro (pai) em um iframe aninhada (criança), se queremos localizar elementos no iframe, então temos de mudar para o iframe.
elemento iframe também tem seus próprios atributos, selênio também fornece um método para nós interruptor de uso

F12 novamente olhando para cima iframe informações, iframe pode ser aninhada ver, ID e nome são 'login_frame' Aqui Insert Picture Descrição
antes do elemento de posicionamento para entrar no seguinte código:

zhengyi.switch_to.frame("login_frame")

Isso vai mudar para o elemento iframe posicionada para continuar antes, você pode ser bem sucedido.
O código completo para esta etapa é:

# 定位login_frame
zhengyi.switch_to.frame("login_frame")
zhengyi.find_element_by_xpath('//*[@id="switcher_plogin"]').click()
# 定位账号、密码,并输入
zhengyi.find_element_by_xpath('//*[@id="u"]').send_keys("839811794")
zhengyi.find_element_by_xpath('//*[@id="p"]').send_keys("199306zy")
# 定位登录按钮
zhengyi.find_element_by_xpath('//*[@id="login_button"]').click()

Desta vez, o site tem sido com sucesso caixa de correio QQ.

Elemento de posicionamento, interface de gravação

Continuar, depois de um login bem-sucedido a caixa de correio, chegou a escrever a interface, de acordo com as práticas convencionais, é preciso clicar no botão no canto superior esquerdo de gravação para expandir a letra específica de interface

O mesmo método, F12 para operar, consulte o ID de elemento botão carta posicionado = 'composebtn', clique em coisas de envio

件# 定位写信按钮
zhengyi.find_element_by_xpath('//*[@id="composebtn"]').click(

Este depurador tempo, o sucesso de aberto resultados da web selênio posicionado a menos de um id composebtn.
Desta vez expôs problemas em um link, o código antes de mudar o iframe aninhada login_frame, o elemento de gravação de cada vez, e não um iframe, por isso antes do posicionamento, é necessário para deixar o ninho para retornar ao documento principal

zhengyi.switch_to.default_content()

Tal interruptor aninhada para o documento principal, e execute o programa novamente, ou encontrar um erro

Por várias vezes verificar as informações e, finalmente, encontrou uma carta na QQ será exibida após o login. Após o momento da aterragem, se fomos para localizar um botão carta, desta vez pela velocidade da rede, o impacto do PC objetivo, não irá localizar elementos.
Nós só precisa adicionar um sono um segundo, você pode aperfeiçoar solução. (Desta vez, reflete o papel do lead-in biblioteca de tempo ~)

#离开login_frame
 zhengyi.switch_to.default_content()
 #等待一秒
 time.sleep(1)
 # 定位写信按钮
 zhengyi.find_element_by_xpath('//*[@id="composebtn"]').click()

Isso permite que você localize um botão de carta, digite e-mail para os passos

Posicionando elementos, envie um e-mail Aqui Insert Picture Descrição
editor conteúdo da mensagem tem quatro partes, destinatários, assunto, corpo, e, finalmente, clique no botão Enviar

Antes percorrendo cada elemento do poço, a este ponto, eu iframe aninhada tornar posicionamento extremamente cuidadoso estão prontos para observar se o iframe aninhada.
o suficiente certeza, o "Para", "Assunto" e "Enviar" no documento principal é mainFrame aninhados, e "texto" tem sido sub-frame mainFrame de nested.

assim, essa lógica passo:

1, o interruptor de mainFrame,
2, respectivamente localizar receptores e chamada sujeita a enviar evento
3, continuam a mudar para o sub-quadro
4, posicionando o texto, chamada para enviar evento
5, o sub-quadro, para voltar ao seu quadro-mãe, isto é, está em mainFrame
6, localize o botão de enviar, chamar o evento de clique

Este passo, há muito menos do que a intenção do poço:

1, localizar os destinatários e navegar encontrada para os elementos, bem como sub-div, através de simulação, descobrimos que apenas o segundo elemento de sub-div é realmente capaz de localizar o destinatário, por isso o primeiro ID de posicionamento = 'toAreaCtrl', e seleccionar a segunda entrada, como o posicionamento do div.
Específica visando conteúdo XPath: "// * [@ id = 'toAreaCtrl'] / div [2] / INPUT"
Aqui Insert Picture Descrição
2. O mesmo problema é encontrado na localização do destinatário, após a mudança para o mainframe obrigação, posicionando o destinatário anteriormente, além de uma execução diferida, ou será incapaz de localizar o elemento receptor. Por razões desconhecidas, então eu sugiro que se você mais tarde encontrar elementos de posicionamento não pode, você pode tentar adicionar um time.sleep.

3. posicionamento do corpo, para mudar de iframe mainFrame, encontrou id iframe eo nome é uma seqüência de números dinamicamente, mas só suporta id switch_to.frame fixo ou nome. Então, nós queremos para o outro lado, para ser xpath iframe classe posicionamento, e depois passou switch_to.frame para switch. especificamente:

#切换到iframe
zhengyi.switch_to.frame(zhengyi.find_element_by_xpath('//*[@class="qmEditorIfrmEditArea"]'))

Aqui Insert Picture Descrição
4. O corpo da necessidade recado para ligar para um evento de clique ativado, a fim de iniciar o evento de envio. Se você não clicar o primeiro e, em seguida, de gravação, em seguida, enviar o conteúdo do assunto será colocado atrás da caixa de texto. (Eu não sei por que há tanta definição a ~)

Então resumir, este passo do código:

# 切换到mainFrame
zhengyi.switch_to.frame('mainFrame')
time.sleep(1)
# 定位收件人,并输入
zhengyi.find_element_by_xpath("//*[@id='toAreaCtrl']/div[2]/input").send_keys("[email protected]")
# 定位主题,并输入
zhengyi.find_element_by_xpath('//*[@id="subject"]').send_keys("来自zhengyi的邮件")
# 定位邮件正文,先进入到iframe
zhengyi.switch_to.frame(zhengyi.find_element_by_xpath('//*[@class="qmEditorIfrmEditArea"]'))
# 必须先点击正文,再send_keys
zhengyi.find_element_by_xpath('/html/body').click()
zhengyi.find_element_by_xpath('/html/body').send_keys("Hello World","\nZhengyi")
# 返回到mainframe
zhengyi.switch_to.parent_frame()
# 定位发送按钮
zhengyi.find_element_by_xpath('//*[@name="sendbtn"]').click()

(É que o curto período de dezenas de linhas, consumir uma grande quantidade de células cerebrais mortas)

Os elementos são posicionados resumo

1, quadro é muito importante, devemos olhar se aninhada, e atenção comutação
2, ID ou elemento de nome quando é dinâmico, por favor, dê
3, posicionado com perfumado o XPath
4, se o elemento tem um nó filho, usando um caminho relativo continua localizando
5, realmente nenhuma razão para que o posicionamento investigação falhar, tente usar time.sleep ()

O código de programa final

from selenium import webdriver
#导入时间模块
import time
# 注意大写Chrome的C
zhengyi = webdriver.Chrome()
zhengyi.get('https://mail.qq.com/')
# 定位login_frame
zhengyi.switch_to.frame("login_frame")
zhengyi.find_element_by_xpath('//*[@id="switcher_plogin"]').click()
# 定位账号、密码,并输入
zhengyi.find_element_by_xpath('//*[@id="u"]').send_keys("839811794")
zhengyi.find_element_by_xpath('//*[@id="p"]').send_keys("199306zy")
# 定位登录按钮
zhengyi.find_element_by_xpath('//*[@id="login_button"]').click()
# 离开login_frame
# zhengyi.switch_to.parent_frame()
zhengyi.switch_to.default_content()
# 等待一秒
time.sleep(1)
# 定位写信按钮
zhengyi.find_element_by_xpath('//*[@id="composebtn"]').click()
# 切换到mainFrame
zhengyi.switch_to.frame('mainFrame')
time.sleep(1)
# 定位收件人,并输入
zhengyi.find_element_by_xpath("//*[@id='toAreaCtrl']/div[2]/input").send_keys("[email protected]")
# 定位主题,并输入
zhengyi.find_element_by_xpath('//*[@id="subject"]').send_keys("来自zhengyi发来的邮件")
# 定位邮件正文,先进入到iframe
zhengyi.switch_to.frame(zhengyi.find_element_by_xpath('//*[@class="qmEditorIfrmEditArea"]'))
# 必须先点击正文,再send_keys
zhengyi.find_element_by_xpath('/html/body').click()
zhengyi.find_element_by_xpath('/html/body').send_keys("Hello World","\nZhengyi")
# 返回到mainframe
zhengyi.switch_to.parent_frame()
# 定位发送按钮
zhengyi.find_element_by_xpath('//*[@name="sendbtn"]').click()
time.sleep(5)
#关闭浏览器
zhengyi.quit()

dicas

pontos de compartilhamento de ferramentas de desenvolvimento, as dicas mais convenientes:

1, ferramentas de desenvolvimento, o elemento selecionado, clique em Console, pode ser muito intuitiva para ver se o elemento iframe está aninhado Aqui Insert Picture Descrição
2, Elements, selecione elementos deseja localizar, certo -copy-Copy XPath, você pode copiar elementos diretamente xpath
3 Eu espero que você pode me dar dicas para compartilhar que
vos escrevo, para que todos possam recomendar uma ampla recolha de recursos de aprendizagem python, clique para entrar , há um programador sênior antes de aprender a compartilhar

Experiência, notas de estudo, há uma chance de experiência em negócios, e para que todos possam organizar cuidadosamente um python para combate item de informação baseado em zero,

dia Python para você na mais recente tecnologia, perspectivas, aprendendo a deixar uma mensagem de pequenos detalhes

resumo

Estas são as pequenas séries para introduzir a caixa de correio de selênio + python automática de aterragem QQ e enviar função mail, queremos ajuda

Publicado 67 artigos originais · Louvor obteve 25 · vista 110 000 +

Acho que você gosta

Origin blog.csdn.net/haoxun11/article/details/105169775
Recomendado
Clasificación