【问题标题】:NoSuchElementException: no such element: Unable to locate element: {"method":"name","selector":"btnk"}NoSuchElementException:没有这样的元素:无法找到元素:{“method”:“name”,“selector”:“btnk”}
【发布时间】:2019-05-10 12:57:14
【问题描述】:
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome(r"C:\Users\m\Desktop\python\selen\chromedriver.exe")
driver.set_page_load_timeout(10)
driver.get("https://google.com")
driver.find_element_by_name("q").send_keys("Automation")
driver.find_element_by_name("btnk").send_keys(Keys.ENTER)
time.sleep(4)
driver.quit()

我正在尝试这个简单的代码来打开谷歌,用上面的代码搜索一些东西。但我收到此错误消息:

Traceback (most recent call last):
  File "C:\Users\m\Desktop\python\selen\auto.py", line 9, in <module>
    driver.find_element_by_name("btnk").send_keys(Keys.ENTER)
  File "C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 496, in find_element_by_name
    return self.find_element(by=By.NAME, value=name)
  File "C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
    'value': value})['value']
  File "C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, 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":"name","selector":"btnk"}
  (Session info: chrome=74.0.3729.131)
  (Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Windows NT 10.0.17134 x86_64)

【问题讨论】:

标签: python selenium session module sendkeys


【解决方案1】:

这应该可以解决你的问题:

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

driver = webdriver.Chrome("/usr/bin/chromedriver")
driver.set_page_load_timeout(10)
driver.get("https://google.com")
search = driver.find_element_by_name('q')
search.send_keys("google search through python")
search.send_keys(Keys.RETURN)

time.sleep(4)
driver.quit()

我在 Ubuntu + chrome 浏览器中测试过

替换你的代码

driver.find_element_by_name("q").send_keys("Automation")
driver.find_element_by_name("btnk").send_keys(Keys.ENTER)

到 =>

search = driver.find_element_by_name('q')
search.send_keys("google search through python")
search.send_keys(Keys.RETURN)

【讨论】:

  • 非常感谢,我有一个问题,是否也可以使用 selenium 进行网页抓取?我必须阅读网页的内容并对其进行一些计算,然后在该网页上填写一些字段。
  • 如果可以,请为此目的提供教程链接或代码。谢谢!
  • 官方python selenium文档链接selenium-python.readthedocs.io
  • 对于网页抓取,你必须学习beautifulsoup、scrapy或lxml,借助这个库,你可以轻松地抓取网页。如果你想废弃 ajax、jquery 请求等动态网页内容,需要通过这些库学习 selenium。
猜你喜欢
  • 2019-08-11
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-25
  • 2020-03-18
相关资源
最近更新 更多