Python Can';无论我做什么,都不要选择含硒元素

Python Can';无论我做什么,都不要选择含硒元素,python,selenium,webdriver,Python,Selenium,Webdriver,我正在尝试使用selenium开发刮板,但无法在下一页中选择元素: 我试图获取的元素是搜索栏“Texto/Termos a serem pesquisados” 我试过了 element=驱动程序。通过id(“TXTERMO”)查找元素 或 element=驱动程序。按名称(“txtermo”)查找元素 我还尝试了xpath和css选择器 我的代码: from selenium import webdriver from selenium.webdriver.common.keys impor

我正在尝试使用selenium开发刮板,但无法在下一页中选择元素:

我试图获取的元素是搜索栏“Texto/Termos a serem pesquisados”

我试过了

element=驱动程序。通过id(“TXTERMO”)查找元素
或
element=驱动程序。按名称(“txtermo”)查找元素

我还尝试了xpath和css选择器

我的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("http://comprasnet.gov.br/acesso.asp?url=/ConsultaLicitacoes/ConsLicitacao_texto.asp")
我希望能够获取元素,以便发送密钥

但我得到了以下错误:

selenium.common.exceptions.NoSuchElementException:消息:无此类 元素:无法定位元素: {“方法”:“名称”,“选择器”:“TXTERMO”}(会话信息: chrome=71.0.3578.98)(驾驶员信息:chromedriver=2.45.615279 (12b89733300bd268cff3b78fc76cb8f3a7cc44e5),平台=Linux 4.15.0-43-通用x86_64)


您试图获取的元素位于框架内。框架是它们自己的文档,Selenium将其视为单独的搜索上下文:

>>> from selenium import webdriver
>>> driver = webdriver.Chrome()
>>> driver.get("http://comprasnet.gov.br/acesso.asp?url=/ConsultaLicitacoes/ConsLicitacao_texto.asp")
>>> element = driver.find_element_by_id("txtTermo")
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    element = driver.find_element_by_id("txtTermo")
  File "#PATH_REDACTED#\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 360, in find_element_by_id
    return self.find_element(by=By.ID, value=id_)
  File "#PATH_REDACTED#\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
    'value': value})['value']
  File "#PATH_REDACTED#\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "#PATH_REDACTED#\Python\Python36-32\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":"id","selector":"txtTermo"}
  (Session info: chrome=71.0.3578.98)
  (Driver info: chromedriver=2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),platform=Windows NT 10.0.15063 x86_64)

>>> driver.switch_to.frame('main2')
>>> element = driver.find_element_by_id("txtTermo")
>>> element
<selenium.webdriver.remote.webelement.WebElement (session="d5a30c9f45d49a23152767da0b811f58", element="0.6642244007973428-1")>

如今,人们非常不鼓励使用框架,在较新的应用程序上也不太可能遇到框架,但在过去,我发现(尽管听起来很愚蠢)检查
driver.page_source
的值可以帮助您了解当前操作的整个文档的哪一部分。这将只显示当前搜索上下文的源,即当前切换到的帧。

也许您必须等待它,查看WebdriverWait()和ExpectedConditions()谢谢你,老兄,这个问题困扰了我很长时间!你是最棒的!
driver.switch_to.default_content()