【问题标题】:How to send inputs to an element using selenium if there is not id or class name?如果没有 id 或类名,如何使用 selenium 向元素发送输入?
【发布时间】:2020-05-22 03:44:17
【问题描述】:

我从这个网页 (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>

关于如何获取该元素的任何建议?我想 send_key 并在该字段中输入用户名。我试过这个,但是当我运行时出现超时错误,我什至不确定这是否是选择它的正确方法:

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

username.send_keys("username")

【问题讨论】:

  • 您要登录吗?
  • 是的,我想输入我的用户名和密码,然后点击提交按钮,但我什至无法为我的用户名和密码发送文本输入
  • 您必须单击登录才能看到用户名元素。你做到了吗?
  • 您是否遇到任何错误?
  • @Sri 我让它在它打开登录弹出窗口的地方工作,这就是我无法获取该元素的地方

标签: python selenium selenium-webdriver


【解决方案1】:

使用 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

【讨论】:

  • 谢谢我能够使用 css 选择器抓取元素!我什至没有想过要尝试。
猜你喜欢
  • 1970-01-01
  • 2013-04-13
  • 1970-01-01
  • 2015-09-13
  • 2021-11-02
  • 2021-03-23
  • 1970-01-01
  • 2021-04-24
  • 2018-07-13
相关资源
最近更新 更多