【问题标题】:Can't seem to find element with selenium in python似乎无法在 python 中找到带有硒的元素
【发布时间】:2020-04-23 16:47:34
【问题描述】:

我是一名新程序员,最近开始涉足网络抓取和自动化。我正在尝试制作一个程序,该程序将在交易平台上登录,并搜索股票 Facebook“FB”

登录部分似乎工作正常,但搜索 FB 股票却不行。自动化过程不会在搜索栏中输入任何内容。我已经尝试了所有我知道的 (find_element_by) 方法,但它仍然不起作用。

帐户详细信息将在程序中,如果您想自己运行代码“随意!”这是一个假帐户...

这是我的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
browser = webdriver.Chrome('/Users/larskvist/downloads/chromedriver')
browser.get('https://www.forex.com/en-uk/account-login/')

username_elem = browser.find_element_by_name('Username')
username_elem.send_keys('kebababdulaziz@gmail.com')

time.sleep(0.5)

password_elem = browser.find_element_by_name('Password')
password_elem.send_keys('KEbababdulaziz')
password_elem.send_keys(Keys.ENTER)

time.sleep(5)

search_elem = browser.find_element_by_class_name('market-search__button ng-pristine ng-valid ng-touched')
search_elem.send_keys('FB')

time.sleep(30)
browser.close()

这是我不想得到的元素:

<input _ngcontent-c23="" appcustomplaceholder="" class="market-search__search-input ng-pristine ng-valid ng-touched" formcontrolname="query" type="text" placeholder="Search markets">

提前非常感谢!

【问题讨论】:

    标签: python selenium web-scraping automation


    【解决方案1】:

    你有错误的元素。你应该定位input元素。

    为避免 sleep() 不必要地减慢您的脚本速度,最好的做法是诱导 WebDriverWait() 并等待 element_to_be_clickable() 并遵循 css 选择器。

    search_elem = WebDriverWait(browser,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input.market-search__search-input")))
    search_elem.send_keys('FB')
    

    您需要导入以下库。

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    

    【讨论】:

    • 非常感谢,搜索部分有效。我有一些问题,我认为整个过程太快了,以至于搜索元素会提出要按的建议。但我认为我需要更多地研究这个包,以了解为什么会发生这种情况。再次感谢!
    【解决方案2】:

    使用这个:

    search_elem = browser.find_element_by_class_name('market-search__button)
    

    而不是使用完整的类名,它们之间有空格......

    【讨论】:

    • 它似乎仍然无法正常工作...我已经插入了您所写的 search_elem,并且在站点登录但未在搜索栏中输入任何内容后出现此错误。 selenium.common.exceptions.ElementNotInteractableException:消息:元素不可交互
    猜你喜欢
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2021-08-12
    • 1970-01-01
    相关资源
    最近更新 更多