Как отправить входные данные в элемент, используя селен, если там нет идентификатора или имени класса? - PullRequest
1 голос
/ 17 апреля 2020

У меня есть это поле ввода пользователя (для имени пользователя) с этой веб-страницы (https://robinhood.com/crypto/BTC), к которому я понятия не имею, как получить доступ с помощью Python Selenium.

Я пытался использовать Xpath и имя класса, но не смог заставить его работать.

<div class="form-group touched"><label><div>Email</div><div><input autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" required="" name="username" type="text" value=""></div></label></div>

Есть предложения о том, как получить этот элемент? Я хочу отправить_ключ и ввести имя пользователя в этом поле. Я пробовал это, но я получаю ошибку тайм-аута, когда я бегу, и я даже не уверен, правильно ли это выбрать:

username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable(
    (By.XPATH, "//input[contains(text(),'username')]")))

username.send_keys("username")

1 Ответ

2 голосов
/ 17 апреля 2020

Работа с css_selector

Вот полный пример

import time

from selenium import webdriver
from selenium.webdriver.common.keys import Keys


class RobinHoodBot:
    def __init__(self, email, password):
        self.chrome_browser = webdriver.Chrome()
        self.email = email
        self.password = password

    def login(self):
        self.chrome_browser.get("https://robinhood.com/crypto/BTC")
        time.sleep(2)

        login = self.chrome_browser.find_element_by_link_text("Log In")
        login.click()
        time.sleep(2)

        email_box = 'div.form-group:nth-child(1) > label:nth-child(1) > div:nth-child(2) > input:nth-child(1)'
        email_input = self.chrome_browser.find_element_by_css_selector(email_box)

        password_box = 'div.form-group:nth-child(2) > label:nth-child(1) > div:nth-child(2) > input:nth-child(1)'
        password_input = self.chrome_browser.find_element_by_css_selector(password_box)

        email_input.send_keys(self.email)
        password_input.send_keys(self.password)
        password_input.send_keys(Keys.ENTER)

        time.sleep(5)


my_bot = RobinHoodBot('0m3r@Email.com', 'password')
my_bot.login()

Просто напоминание для чтения

https://robinhood.com/robots.txt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...