3 votes

Envoyer des valeurs à partir d'un dataframe en utilisant send_keys() dans Selenium en utilisant Python

J'ai un dataframe df. J'essaie d'envoyer les valeurs présentes dans la colonne 'fruit' à la page google translate en utilisant send_keys() dans Selenium et python. Voici un exemple de code qui reproduit ce que j'essaie de faire.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pandas as pd

# Create a test dataframe
fruit = ['This is apple', 'This is orange', 'This is mango']
bucket = ['A', 'B', 'C']
df = pd.DataFrame({"fruit": fruit, "bucket": bucket})

# create a new Firefox session
driver = webdriver.Firefox()

# Wait for the page to load
driver.implicitly_wait(5)

# Maximize the browser window
driver.maximize_window()

# navigate to the home page
driver.get("https://translate.google.co.in/")

# Locate the text field to update values
text_field = driver.find_element_by_name("text")

# Clears any value already present in text field
text_field.clear()

# Updates the string 'Breaking Bad' in search bar
text_field.send_keys(df['fruit'])
text_field.send_keys(Keys.ENTER)

Bien que cela fonctionne, les lignes sont toutes envoyées sur une seule ligne, comme ceci :

This is appleThis is orangeThis is mango

Je veux que les valeurs apparaissent dans la page de google translate comme ceci :

This is apple
This is orange
This is mango

Toute aide sur la manière d'y parvenir serait très appréciée. J'ai Python 3.6.6 et ma version de selenium est 3.141.0. Mon système d'exploitation est Windows 10 (64 bits).

3voto

Andersson Points 31774

Vous pouvez essayer d'envoyer la chaîne concaténée en tant que

text_field.send_keys(" ".join(df['fruit']))

ou avec des caractères de retour à la ligne :

text_field.send_keys("\n".join(df['fruit']))

P.S. Au lieu d'utiliser Selenium pour traduire les chaînes de caractères, vous pouvez utiliser GoogleTranslateAPI liaison python :

Dans Terminal/CommandLine :

pip install git+https://github.com/BoseCorp/py-googletrans.git

Dans le shell/IDE Python :

from googletrans import Translator

translator = Translator()
#  Translate into "es" (Spanish)
print(translator.translate(" ".join(df['fruit']), dest='es').text)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X