Jump to content

Python e Selenium Importar dados txt ou csv


JorgeLuzz

Recommended Posts

Boa noite,

Tenho uma duvida

Como importo dados de txt ou de csv para selenium por exemplo

Tabela

Nome,Email,Data_Nascimento

Jorge,@test.com,07/05/1990

Jorge,@test.com,07/05/1990

Jorge,@test.com,07/05/1990

Jorge,@test.com,07/05/1990

 

Queria fazer import e loop para continuar ate nao existir mais conteudo na tabela.

Nao sei se fui explicito.

 

Nome.send_keys('NOME')
time.sleep(1)
EMAIL.send_keys('EMAIL')
time.sleep(1)
DATANAS.send_keys('DATANASCIMENTO')
time.sleep(1)
 

Edited by JorgeLuzz
Link to comment
Share on other sites

Agora, M6 disse:

A mensagem é bem clara,  df não está definido. Estás a tentar usar o objeto df sem o ter definido.
Vê lá se o teu "data" não devia ser o teu "df".

Ja dei fix nisso agora aparece outro erro 

i = 0

while i == 0: 
    a = 0 
    NomeD = data.nome
    ApelidoD = data.apelido
    EmailD = data.emails
    TelD = data.telemovel

    # Sends Nome
    Nome = driver.find_element_by_id('first_name')
    Nome.send_keys(NomeD[a])
    # Sends Ultimo nome
    Ultimo = driver.find_element_by_id('last_name')
    Ultimo.send_keys(ApelidoD[a])
    # Sends Email
    Email = driver.find_element_by_id('email')
    Email.send_keys(EmailD[a])
    # Sends Telemovel
    Tel = driver.find_element_by_id('phone')
    Tel.send_keys(TelD[a])
    # Click login
    driver.find_element_by_xpath('//*[@id="step_1"]/div[10]/button').click()

TypeError: object of type 'numpy.float64' has no len()

Link to comment
Share on other sites

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import os
import time
import sys
import pandas as pd
import numpy as np
import random
import xlrd

driver = webdriver.Chrome('C:\chromedriver')

#Open the article link using get method
driver.get('https://www.icmarkets.com/sc/pt/open-trading-account/live')
data = pd.read_excel (r'http:\\localhost\Dados.xlsx')
i = 0
    while i == 0: 
    a = 0 
    NomeD = data.nome
    ApelidoD = data.apelido
    EmailD = data.emails
    TelD = data.telemovel
    DiaD = data.day
    MesD = data.month
    AnoD = data.year
    MoradaD = data.morada
    CidadeD = data.cidade
    DistritoD = data.distrito
    CPostalD = data.codigopostal
    CPostalD2 = data.codigopostal2
    
    # Insere Primeiro Nome
    Nome = driver.find_element_by_id('first_name')
    Nome.send_keys(str(NomeD[a]))
    # Insere Ultimo Nome
    Ultimo = driver.find_element_by_id('last_name')
    Ultimo.send_keys(str(ApelidoD[a]))
    # Insere Email
    Email = driver.find_element_by_id('email')
    Email.send_keys(str(EmailD[a]))
    # Insere Telemovel
    Tel = driver.find_element_by_id('phone')
    Tel.send_keys(int(TelD[a]))
    # Botao do Primeiro Passo
    driver.find_element_by_xpath('//*[@id="step_1"]/div[10]/button').click()
    time.sleep(10)
    
    
    # Insere Dia
    DDia = driver.find_element_by_id('birth_day')
    DDia.send_keys(int(DiaD[a]))
    # Insere Mes  
    driver.find_element_by_xpath('//*[@id="birth_month"]').click()
    time.sleep(2)   
    driver.find_element_by_xpath('//*[@id="mCSB_2_container"]/li['+ str(MesD[a]) +']').click()
    time.sleep(2)
    # Insere Ano
    DAno = driver.find_element_by_id('birth_year')
    DAno.send_keys(str(AnoD[a]))
    # Insere Morada
    Morada = driver.find_element_by_id('address')
    Morada.send_keys(str(MoradaD[a]))
    # Insere Cidade
    Cidade = driver.find_element_by_id('city')
    Cidade.send_keys(str(CidadeD[a]))
    # Insere Cidade
    Distrito = driver.find_element_by_id('state')
    Distrito.send_keys(str(DistritoD[a]))
    # Insere Codigo Postal
    CPostal = driver.find_element_by_id('zip_code')
    CPostal.send_keys(int(CPostalD[a]),'-',int(CPostalD2[a]))
    # Afiliado Fixo
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="step_2"]/div[5]/label').click()
    Afiliado = driver.find_element_by_id('reffer_id')
    Afiliado.send_keys('41618')
    time.sleep(1)
    # Finaliza Passo 2
    driver.find_element_by_xpath('//*[@id="step_2"]/div[7]/button').click()
    time.sleep(10)
    
    
    
    
    
    ##STEP 3
    driver.find_element_by_xpath('//*[@id="currency"]').click()
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="currenciesList"]/li[3]').click()
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="step_3"]/div[5]/button').click()

    time.sleep(5)

    ## STEP 4
    ## VARIAVERIS STEP 4
    Secreta = driver.find_element_by_id('security_answer')


    driver.find_element_by_xpath('//*[@id="step_4"]/div[1]/div[2]/div[2]').click()
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="security_question"]').click()
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="mCSB_6_container"]/li[1]').click()
    time.sleep(1)
    Secreta.send_keys('REGISTAR')
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="step_4"]/div[5]/div[2]/label').click()
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="step_4"]/div[6]/button').click()


    time.sleep(5)
    driver.find_element_by_xpath('/html/body/div[7]/div/div/div[3]/div/span').click()
    time.sleep(5)
    driver.get('https://www.icmarkets.com/sc/pt/open-trading-account/live')

a = a + 1

Ja consegui passar varias barreiras, mas agora estou com problema queria que o script corre-se todas as linhas do ficheiro excel mas so corre a primeira, e repete sempre a primeira.
 

Outro do problema está no Insere Mes como é uma listbox e ao abrir so aparece ate mes 7 se colocar mes 9 ele nao assume porque tem de dar scrool na listbox.

 

Alguém me dá uma maozinha?

Link to comment
Share on other sites

Pelo que percebi do teu código, não está a iterar sobre os resultados do data. Se assim for, tens de fazer um loop por todos os resultados desse objeto.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

3 horas atrás, M6 disse:

Pelo que percebi do teu código, não está a iterar sobre os resultados do data. Se assim for, tens de fazer um loop por todos os resultados desse objeto.

Já está 😄 Obrigado ja esta funcionar

 

Só mais uma coisa sabes como fazer 

FileUpload pelo Windows Browser
Clicar Botao com selenium e webdriver 
E abrir file e fazer upload browser do windows files?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.