Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.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_Selenium_Selenium Chromedriver - Fatal编程技术网

Python 使用selenium进行抓取时,无法单击按钮并加载包含所需数据的隐藏表

Python 使用selenium进行抓取时,无法单击按钮并加载包含所需数据的隐藏表,python,selenium,selenium-chromedriver,Python,Selenium,Selenium Chromedriver,我正试图抓取一个表单,它有导航选项卡,显示4种不同的方式来搜索所请求的信息。URL加载到我要搜索的选项卡中,并自动填充日期字段。当人类用户想要查看信息时,他们只需单击所选选项卡中的搜索按钮即可,该按钮启用了加载屏幕,并用我想要获取的数据填充并启用了下表。我目前正在使用python 3和selenium 按钮代码: <button type="submit" id="community-search" class="btn btn-primary" data-bind="click: sub

我正试图抓取一个表单,它有导航选项卡,显示4种不同的方式来搜索所请求的信息。URL加载到我要搜索的选项卡中,并自动填充日期字段。当人类用户想要查看信息时,他们只需单击所选选项卡中的搜索按钮即可,该按钮启用了加载屏幕,并用我想要获取的数据填充并启用了下表。我目前正在使用python 3和selenium

按钮代码:

<button type="submit" id="community-search" class="btn btn-primary" data-bind="click: submitSearch, enable: searchEnabled">Search</button>
错误-

    Traceback (most recent call last):
  File "Project.py", line 29, in <module>
    browser.find_element_by_css_selector('community-search').click()
  File "C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 589, in find_element_by_css_selector
    return self.find_element(by=By.CSS_SELECTOR, value=css_selector)
  File "C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 955, in find_element
    'value': value})['value']
  File "C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 312, in execute
    self.error_handler.check_response(response)
  File "C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"community-search"}
回溯(最近一次呼叫最后一次):
文件“Project.py”,第29行,在
浏览器。通过“css”选择器(“社区搜索”)查找元素。单击()
文件“C:\ProgramData\Anaconda3\lib\site packages\selenium\webdriver\remote\webdriver.py”,第589行,按css选择器查找元素
返回self.find_元素(by=by.CSS_选择器,value=CSS_选择器)
文件“C:\ProgramData\Anaconda3\lib\site packages\selenium\webdriver\remote\webdriver.py”,第955行,在find\u元素中
'value':value})['value']
文件“C:\ProgramData\Anaconda3\lib\site packages\selenium\webdriver\remote\webdriver.py”,第312行,执行
self.error\u handler.check\u响应(响应)
文件“C:\ProgramData\Anaconda3\lib\site packages\selenium\webdriver\remote\errorhandler.py”,第242行,在check\u响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“css选择器”,“选择器”:“社区搜索”}
我对python和web抓取相当陌生,这是我的第一篇文章,所以我希望这是足够的信息。任何帮助都将不胜感激


您的CSS选择器缺少
#
,因为
社区搜索
是一个id

因此,不是:

browser.find_element_by_css_selector('community-search').click()
应该是:

browser.find_element_by_css_selector('#community-search').click()
另一种方法是:

browser.find_element_by_id('community-search').click()

错误说明了一切:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"community-search"}
错误清楚地显示为NoTouchElementException,因为您使用的css选择器(如下所示)没有标识唯一的元素:

browser.find_element_by_css_selector('community-search').click()
如果社区搜索是
id
的值,则正确的
css\u选择器将是(在值之前添加
),如下所示:

browser.find_element_by_css_selector("#community-search").click()
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#community-search"))).click()
browser.find_element_by_id("community-search").click()
但是,当您在调用
browser.get()
后不久试图搜索WebElement时,您可能需要结合with子句进行归纳,如下所示:

browser.find_element_by_css_selector("#community-search").click()
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#community-search"))).click()
browser.find_element_by_id("community-search").click()
如果要使用
id
属性,可以使用以下代码行,如下所示:

browser.find_element_by_css_selector("#community-search").click()
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#community-search"))).click()
browser.find_element_by_id("community-search").click()
要使用
id
属性和WebDriverWait单击WebElement:


您是否尝试过
浏览器。通过\u id(“社区搜索”)查找\u元素\u
谢谢,这非常有帮助,使用id可以找到它,我知道我现在正在查找什么来查找更多帮助。但是现在selenium已经在等待之后识别出了按钮,它说元素不可见。我最终从最近的可见对象创建了一个元素,然后用Tab键切换并按下按钮上的enter键。elem=browser。通过xpath('/*[@id=“task status”]')元素查找元素。发送密钥(keys.TAB*2,keys.ENTER)