Vídeo recomendado
https://youtu.be/diWPPPhW-9E

driver.AddArgument ("--headless")

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Julio Mangilli
Manda bem
Manda bem
Mensagens: 127
Registrado em: Sex Out 05, 2018 2:42 pm

driver.AddArgument ("--headless")

Mensagem por Julio Mangilli »

Olá Pessoal,

A baixou eu tenho uma programação bem bacana que funciona muito bem para baixar arquivos de Notas fiscais de serviço da Internet, roda bem tranquilo.

Porem quando eu coloco para trabalhar em segundo Plano com argumento "driver.AddArgument ("--headless")"
"""'O Download não é efetuado""""".
Ah também não consegui manipular o caminho do arquivo, acredito que fiz algo errado, mas sem ser em segundo plano, baixa o arquivo tranquilamente na Pasta download padrão Chrome.

Não tenho conhecimento avançados nesse tipo de programação, mas estou adorando, poderiam me dar uma força amigos?


Sub Betha()

Dim driver As New Selenium.ChromeDriver
Dim screenShot As Image
Set driver = New ChromeDriver
' driver.AddArgument ("--headless")
driver.Get "https://e-gov.betha.com.br/e-nota/entidade.faces"
While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend
driver.FindElementById("login:iUsuarios").SendKeys Range("D6")
driver.FindElementById("login:senha").SendKeys Range("D7")
driver.FindElementById("login:btAcessar").Click

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend


driver.Get "https://e-gov.betha.com.br/e-nota/contr ... nfse.faces"

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend

driver.FindElementById("mainForm:periodoIni").SendKeys Range("D10")
driver.FindElementById("mainForm:periodoFim").SendKeys Range("D11")
driver.FindElementById("mainForm:btExecutar").Click
While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend
driver.SwitchToAlert.Accept

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend


driver.Get "https://e-gov.betha.com.br/e-nota/contr ... cess.faces"

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend



driver.FindElementByPartialLinkText("ver").Click



On Error GoTo Err
Dim Auxiliar As Long
Dim URL As String, CaminhoLocal As String
URL = "https://e-gov.betha.com.br/e-nota/contr ... cess.faces"
CaminhoLocal = "C:\Users\User\Desktop\Teste"

MsgBox "Download efetuado com sucesso!"
Exit Sub
Err:
MsgBox "Erro no download do arquivo"




End Sub



Desde já muito Obrigado.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Julio Mangilli
Manda bem
Manda bem
Mensagens: 127
Registrado em: Sex Out 05, 2018 2:42 pm

Re: driver.AddArgument ("--headless")

Mensagem por Julio Mangilli »

Primeiramente agradeço por estar me ajudando, porem por falta de experiencia da minha parte ainda não consegui.. Nem fazer o download usando o método " driver.AddArgument ("--headless")" , somente sem ele que consigo e também não consegui manipular o download.

Acredito também que exista alguns erros em o que montei, poderia sitar aonde posso estar errando?

Estou assistindo seus videos e são todos ótimos, já progredi muito com eles e agradeço também por compartilhar o conhecimento.

Podes verificar se teria algo a mudar ?

Sub Betha()

Dim driver As New Selenium.ChromeDriver
Set driver = New ChromeDriver
driver.AddArgument ("--headless")
driver.SetPreference "download.default_directory", Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "")
driver.SetPreference "download.directory_upgrade", True
driver.SetPreference "download.prompt_for_download", False

driver.Get "https://e-gov.betha.com.br/e-nota/entidade.faces"

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend
driver.FindElementById("login:iUsuarios").SendKeys Range("D6")
driver.FindElementById("login:senha").SendKeys Range("D7")
driver.FindElementById("login:btAcessar").Click

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend


driver.Get "https://e-gov.betha.com.br/e-nota/contr ... nfse.faces"

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend

driver.FindElementById("mainForm:periodoIni").SendKeys Range("D10")
driver.FindElementById("mainForm:periodoFim").SendKeys Range("D11")
driver.FindElementById("mainForm:btExecutar").Click
While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend
driver.SwitchToAlert.Accept

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend


driver.Get "https://e-gov.betha.com.br/e-nota/contr ... cess.faces"

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend



driver.FindElementByPartialLinkText("ver").Click



On Error GoTo Err
Dim Auxiliar As Long
Dim URL As String, CaminhoLocal As String
URL = "https://e-gov.betha.com.br/e-nota/contr ... cess.faces"
CaminhoLocal = "C:\Users\User\Desktop\Teste"

MsgBox "Download efetuado com sucesso!"
Exit Sub
Err:
MsgBox "Erro no download do arquivo"




End Sub


Julio Mangilli
Manda bem
Manda bem
Mensagens: 127
Registrado em: Sex Out 05, 2018 2:42 pm

Re: driver.AddArgument ("--headless")

Mensagem por Julio Mangilli »

Olá amigos,

Consegui manipular o Download, agora tudo certo.
Preciso de um Help no modo Headless, se eu ativo ele meu download não sai.
Porque no modo oculto ocorre isso ? preciso de uma luz

Sub Betha()

Dim driver As New Selenium.ChromeDriver
Set driver = New ChromeDriver
'driver.AddArgument ("--headless")

driver.SetPreference "download.prompt_for_download", False
driver.SetPreference "download.directory_upgrade", True
driver.SetPreference "download.default_directory", "C:\Users\User\Desktop\Teste\"
driver.SetPreference "safebrowsing.enabled", False
driver.SetPreference "download.prompt_for_download", False
driver.SetPreference "download.setdownloadbehaviour", "allow"
driver.SetPreference "safebrowsing.disable_download_protection", True


driver.Get "https://e-gov.betha.com.br/e-nota/entidade.faces"

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend
driver.FindElementById("login:iUsuarios").SendKeys Range("D6")
driver.FindElementById("login:senha").SendKeys Range("D7")
driver.FindElementById("login:btAcessar").Click

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend


driver.Get "https://e-gov.betha.com.br/e-nota/contr ... nfse.faces"

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend

driver.FindElementById("mainForm:periodoIni").SendKeys Range("D10")
driver.FindElementById("mainForm:periodoFim").SendKeys Range("D11")
driver.FindElementById("mainForm:btExecutar").Click
While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend
driver.SwitchToAlert.Accept

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend


driver.Get "https://e-gov.betha.com.br/e-nota/contr ... cess.faces"

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend



driver.FindElementByPartialLinkText("ver").Click



On Error GoTo Err
Dim Auxiliar As Long
Dim URL As String, CaminhoLocal As String
URL = "https://e-gov.betha.com.br/e-nota/contr ... cess.faces"
CaminhoLocal = "C:\Users\User\Desktop\Teste\"

MsgBox "Download efetuado com sucesso!"
Exit Sub
Err:
MsgBox "Erro no download do arquivo"




End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Julio Mangilli
Manda bem
Manda bem
Mensagens: 127
Registrado em: Sex Out 05, 2018 2:42 pm

Re: driver.AddArgument ("--headless")

Mensagem por Julio Mangilli »

Olá Pessoal,

Não progredi em nenhum momento com esse cara chamado "driver.AddArgument ("--headless")" kkkkkkkkk
Infelizmente com ele ativo não consigo fazer download algum, gostaria de entender se é algo com meu navegador ou realmente é complicado?


Desde já agradeço qualquer ajuda.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: driver.AddArgument ("--headless")

Mensagem por webmaster »

Julio,

Não estava acompanhando de perto. Quer dizer que, quando você remove a opção headless, funciona normalmente?


Julio Mangilli
Manda bem
Manda bem
Mensagens: 127
Registrado em: Sex Out 05, 2018 2:42 pm

Re: driver.AddArgument ("--headless")

Mensagem por Julio Mangilli »

Bom dia,

Sim, Quando eu retiro ele o download ocorre normalmente.

Eu testei esse argumento para puxar uma tabela e com ele ativo, funcionou normalmente a tabela veio tranquilamente, agradeço desde já porque só consegui puxar os dados através de seus videos e são todos òtimos, mas para efetuar download é onde ocorre o problema, somente download mesmo não executa com argumento ativo.

Hoje está assim... Será que tenho que colocar alguma travinha lá em baixo de alguns segundos para que o download seja concluído?
Fico até pensando que pode ser o navegador ou algum complemento que falta, procurei na internet e vi muita variedade para outras linguagens, tentei arrumar para ver se conseguia mas não tive sucesso...

Desde já agradeço sua atenção.

Sub Betha()

Dim driver As New Selenium.ChromeDriver
Set driver = New ChromeDriver
'driver.AddArgument ("--headless")

driver.SetPreference "download.prompt_for_download", False
driver.SetPreference "download.directory_upgrade", True
driver.SetPreference "download.default_directory", "C:\Users\User\Desktop\Teste\"
driver.SetPreference "safebrowsing.enabled", False
driver.SetPreference "download.prompt_for_download", False
driver.SetPreference "download.setdownloadbehaviour", "allow"
driver.SetPreference "safebrowsing.disable_download_protection", True


driver.Get "https://e-gov.betha.com.br/e-nota/entidade.faces"

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend
driver.FindElementById("login:iUsuarios").SendKeys Range("D6")
driver.FindElementById("login:senha").SendKeys Range("D7")
driver.FindElementById("login:btAcessar").Click

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend


driver.Get "https://e-gov.betha.com.br/e-nota/contr ... nfse.faces"

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend

driver.FindElementById("mainForm:periodoIni").SendKeys Range("D10")
driver.FindElementById("mainForm:periodoFim").SendKeys Range("D11")
driver.FindElementById("mainForm:btExecutar").Click
While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend
driver.SwitchToAlert.Accept

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend


driver.Get "https://e-gov.betha.com.br/e-nota/contr ... cess.faces"

While Busy
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend



driver.FindElementByPartialLinkText("ver").Click



On Error GoTo Err
Dim Auxiliar As Long
Dim URL As String, CaminhoLocal As String
URL = "https://e-gov.betha.com.br/e-nota/contr ... cess.faces"
CaminhoLocal = "C:\Users\User\Desktop\Teste\"

MsgBox "Download efetuado com sucesso!"
Exit Sub
Err:
MsgBox "Erro no download do arquivo"




End Sub


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: driver.AddArgument ("--headless")

Mensagem por webmaster »

Julio,

Olhando o código, faz sentido. O headless falha por causa do SendKeys. O SendKeys é uma interação ativa com o que está na tela. Se não estiver, ele está clicando/digitando no "nada".

Se quiser que seu código funcione no modo headless, você vai ter que abrir mão do SendKeys.

Att


Julio Mangilli
Manda bem
Manda bem
Mensagens: 127
Registrado em: Sex Out 05, 2018 2:42 pm

Re: driver.AddArgument ("--headless")

Mensagem por Julio Mangilli »

Entendi, agora me vi em um caminho complexo.
Qual outro método que posso utilizar no lugar do sendkeys para puxar dados das Range?



E desde já muito obrigado por encontrar o erro.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: driver.AddArgument ("--headless")

Mensagem por webmaster »

Julio,

Falei besteira. Vou analisar o código com calma antes de falar qualquer outra coisa. Aguenta aí


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder