gpt4 book ai didi

python - 如何通过 Selenium 和 Python 将文本发送到搜索字段

转载 作者:太空宇宙 更新时间:2023-11-03 15:35:56 25 4
gpt4 key购买 nike

我正在尝试使用 Python 中的 Selenium 将参数传递给 HTML 代码中的搜索文本:

我正在处理以下 HTML 代码:

</form><form class="search-box-inner">
<div class="input-container">
<input type="text" class="typeahead search-box-input left" autocomplete="off" placeholder="Search ratings, research, analysts, and more..." maxlength="900"></div>
</form>

该代码没有 ID 或名称。它仅具有按类分类的元素。

我尝试了以下

self.driver.find_elements_by_class_name('search-box-inner').send_keys("HSBC Bank plc")  

但是我收到以下错误:

AttributeError: 'list' object has no attribute 'send_keys'

然后我尝试使用以下代码获取列表的第一个元素并发送 key :

self.driver.find_elements_by_class_name('search-box-inner')[0].send_keys("HSBC Bank plc")

我收到以下错误:

"selenium.common.exceptions.WebDriverException: Message: unknown error: cannot focus element"

我也为“typeahead search-box-input left”类尝试了上述两种方法。它抛出同样的错误。以下是我为此使用的代码:

self.driver.find_elements_by_xpath("//*[@class='typeahead search-box-input left']").send_keys("HSBC Bank plc")

我再次遇到以下错误:

AttributeError: 'list' object has no attribute 'send_keys'

然后我尝试使用以下代码获取列表的第一个元素:

self.driver.find_elements_by_xpath("//*[@class='typeahead search-box-input left']").[0].send_keys("HSBC Bank plc")  

我再次遇到以下错误:

selenium.common.exceptions.ElementNotVisibleException: Message:
element not interactable

我也试过下面的方法:

element = wait.until(Ec.visibility_of_element_located((By.XPATH, "//*[@placeholder='Search ratings, research, analysts, and more...']")))

但是无法将参数/键发送到搜索栏。
任何建议都会非常有帮助。

最佳答案

find_elements_by_xpath 返回一个 webelement 列表,这就是您不能直接对其使用 send_keys 方法的原因。如果需要在元素上使用 send_keys,则需要使用 find_element_by_xpathfind_elements_by_xpath("xpathExpression")[0]

请尝试以下建议来解决您的问题:

  1. 尝试使用 xpath self.driver.find_element_by_xpath("//div[@class='input-container']") 而不是您正在使用的 xpath。

  2. 即使在使用上面的 xpath 之后,如果您得到 ElementNotVisibleException 那么请检查该元素是否在 iframe 中,如果是,则切换到 iframe 然后在元素上使用 send_keys

    要切换到 iframe,您可以使用属性 selenium.webdriver.remote.webdriver.WebDriver.switch_to : driver.switch_to.frame(driver.find_element_by_tag_name('iframe')) 然后使用提到的 xpath 在元素上 send_keys 如果你想切换回默认内容,你可以使用driver.switch_to.default_content()

关于python - 如何通过 Selenium 和 Python 将文本发送到搜索字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54807892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com