【发布时间】:2019-07-15 09:57:37
【问题描述】:
我正在尝试使用 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 或 name。它仅按类包含元素。
我尝试了以下
self.driver.find_elements_by_class_name('search-box-inner').send_keys("HSBC Bank plc")
但我收到以下错误:
AttributeError: 'list' object has no attribute 'send_keys'
然后我尝试使用以下代码获取列表的第一个元素并发送密钥:
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...']")))
但无法将参数/键发送到搜索栏。
任何建议都会非常有帮助。
【问题讨论】:
-
抱歉,您输入了 HTML,输入字段为 class="typeahead search-box-input left",如果您想在必须获取后选择 class="search-box-inner"它的 2 个孩子
-
嗨,卡洛,我也尝试过使用这个类“预先输入搜索框输入左侧”,但仍然没有用。
-
很奇怪...你能添加一个ID再试一次吗?否则选择父对象并打印它以查看你得到了什么,然后选择子对象并再次尝试打印你拥有的东西,直到你得到文本字段;)
标签: python selenium selenium-webdriver xpath css-selectors