Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Selenium无法选择搜索栏_Python_Html_Css_Selenium_Selenium Webdriver - Fatal编程技术网

Python Selenium无法选择搜索栏

Python Selenium无法选择搜索栏,python,html,css,selenium,selenium-webdriver,Python,Html,Css,Selenium,Selenium Webdriver,我正在尝试使用selenium来搜索课程并获取结果。我尝试使用的所有选择器都失败,当我打印出来时,它们返回空数组。为什么这些选择器失败,正确的选择器是什么?我通过鼠标悬停并单击带有chrome扩展名的搜索字段来获取关键字和span输入,通过使用chrome Devtools检查HTML来获取span.show.clearfix输入和.show.clearfix输入 #import scrapy from selenium import webdriver from selenium.webdri

我正在尝试使用selenium来搜索课程并获取结果。我尝试使用的所有选择器都失败,当我打印出来时,它们返回空数组。为什么这些选择器失败,正确的选择器是什么?我通过鼠标悬停并单击带有chrome扩展名的搜索字段来获取关键字和span输入,通过使用chrome Devtools检查HTML来获取span.show.clearfix输入和.show.clearfix输入

#import scrapy
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
import json

browserOptions = Options()
browserOptions.add_argument('--headless')
driver = webdriver.Chrome('C:/WebDriver/bin/chromedriver.exe', options=browserOptions)

def css(selector):
    return driver.find_elements_by_id(selector)

driver.get("https://catalog.swarthmore.edu/")
print(driver.title)
search = css("span.show.clearfix input")#css("#keyword")#get search field
print(search)
print(css("span input"))
print(css(".show.clearfix input"))
print(css("#keyword"))

search.send_keys("ANCH 028")#enter your search.
search.submit()
search.clear()#clear search field
driver.quit()
错误消息: 回溯最近一次呼叫上次: 文件getDescWJSON.py,第31行,在 search.send_keysANCH 028输入您的搜索。
AttributeError:“list”对象没有属性“send_keys”

该页面有多个id=关键字的元素,因此结果是一个列表。要发送密钥,请从列表中选择第一个元素:

请尝试以下代码:

search = css('keyword')[0]  #("span.show.clearfix input")#css("#keyword")#get search field

您可能应该更改css函数的名称,因为它实际上是按元素id进行搜索的。

该页面有多个id=关键字的元素,因此结果是一个列表。要发送密钥,请从列表中选择第一个元素:

请尝试以下代码:

search = css('keyword')[0]  #("span.show.clearfix input")#css("#keyword")#get search field

您可能应该更改css函数的名称,因为它实际上是按元素id进行搜索的。

您可以简单地这样做,将键发送到该元素。等待元素在页面加载后出现,并向元素发送键

search=WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//input[@id='keyword']"))).send_keys("ANCH 028")
进口

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

您可以简单地将密钥发送到该元素。等待元素在页面加载后出现,并向元素发送键

search=WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//input[@id='keyword']"))).send_keys("ANCH 028")
进口

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC
这对我很有用:-

driver.get('https://catalog.swarthmore.edu/')
btn = driver.find_element_by_xpath('''/html/body/table/tbody/tr[3]/td[1]/table/tbody/tr[2]/td[2]/table/tbody/tr[1]/td/form/fieldset/span[3]/input[1]''')
btn.click() #you have to click it first
btn.send_keys("ANCH 028")
这对我很有用:-

driver.get('https://catalog.swarthmore.edu/')
btn = driver.find_element_by_xpath('''/html/body/table/tbody/tr[3]/td[1]/table/tbody/tr[2]/td[2]/table/tbody/tr[1]/td/form/fieldset/span[3]/input[1]''')
btn.click() #you have to click it first
btn.send_keys("ANCH 028")

嗨,怎么了?嗨,怎么了?