Página 1 de 2

driver.AddArgument ("--headless")

Enviado: Seg Out 07, 2019 11:12 am
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.

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

Enviado: Seg Out 07, 2019 11:23 am
por webmaster

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

Enviado: Seg Out 07, 2019 1:10 pm
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

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

Enviado: Ter Out 08, 2019 11:26 am
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

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

Enviado: Qui Out 10, 2019 2:19 pm
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.

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

Enviado: Sex Out 11, 2019 12:48 pm
por webmaster
Julio,

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

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

Enviado: Seg Out 14, 2019 7:51 am
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

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

Enviado: Seg Out 14, 2019 4:34 pm
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

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

Enviado: Seg Out 14, 2019 6:02 pm
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.

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

Enviado: Seg Out 14, 2019 6:04 pm
por webmaster
Julio,

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