Selenium - 无法与输入文本框交互

问题描述 投票:0回答:1

使用 Python Selenium,我尝试与“https://www.screener.in/explore/”页面进行交互,该页面有一个输入文本框来搜索公司名称。但代码会抛出错误 “引发异常类(消息、屏幕、堆栈跟踪) selenium.common.exceptions.ElementNotInteractableException:消息:元素不可交互”

下面是使用Python的代码

import time
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.maximize_window()

driver.get("https://www.screener.in/explore/")

button = driver.find_element(By.XPATH, "//input[@class='u-full-width']")
button.send_keys("TCS")

time.sleep(100)

来自HTML页面源码,输入标签

 <input
    aria-label="Search for a company"
    type="search"
    autocomplete="off"
    spellcheck="false"
    placeholder="Search for a company"
    class="u-full-width"
    
    data-company-search="true">

我的目标是在该文本框中搜索公司,页面会引导至公司详细信息页面。

python selenium-webdriver
1个回答
0
投票

您使用了错误的元素。

来自定位器的输入是移动视图的输入,并且它是隐藏的(只要您的尺寸是对应的网络视图)。至于它是隐藏的,它没有大小/位置,因此它不可交互。

您可以通过该定位器过滤输入以获取可见性,并使用第一个可见的输入。

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

URL = "https://www.screener.in/company/compare/00000085/"

driver = webdriver.Chrome()
driver.get(URL)

company_inputs = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'input[type=search]')))
visible_input = [element for element in company_inputs if element.is_displayed()][0]
visible_input.click()
visible_input.send_keys('Boeing')
© www.soinside.com 2019 - 2024. All rights reserved.