当前位置: 首页 > 知识库问答 >
问题:

python - 通过selenium测试网页,总是报错“driver.find_element_by_id”?

东门秦迟
2024-05-17

实例代码

from selenium import webdriverfrom selenium.common.exceptions import NoSuchElementExceptionfrom selenium.webdriver.chrome.options import Optionsdef initialize_driver():    options = Options()    driver = webdriver.Chrome(options=options)    return driverdef find_element_by_id(driver, element_id):    try:        element = driver.find_element_by_id(element_id)        print(element)    except NoSuchElementException:        print(f"Element with ID '{element_id}' not found.")def find_elements_by_id(driver, element_id):    try:        elements = driver.find_elements_by_id(element_id)        print(elements)    except NoSuchElementException:        print(f"Elements with ID '{element_id}' not found.")def find_element_by_class(driver, class_name):    try:        element = driver.find_element_by_class_name(class_name)        print(element)    except NoSuchElementException:        print(f"Element with class '{class_name}' not found.")def find_element_by_xpath(driver, xpath):    try:        element = driver.find_element_by_xpath(xpath)        print(element)    except NoSuchElementException:        print(f"Element with XPath '{xpath}' not found.")def find_element_by_link_text(driver, link_text):    try:        element = driver.find_element_by_link_text(link_text)        print(element)    except NoSuchElementException:        print(f"Element with link text '{link_text}' not found.")def find_element_by_partial_link_text(driver, partial_link_text):    try:        element = driver.find_element_by_partial_link_text(partial_link_text)        print(element)    except NoSuchElementException:        print(f"Element with partial link text '{partial_link_text}' not found.")def find_elements_by_tag_name(driver, tag_name):    try:        elements = driver.find_elements_by_tag_name(tag_name)        print(elements)    except NoSuchElementException:        print(f"Elements with tag name '{tag_name}' not found.")def retrieve_tags():    driver = initialize_driver()    driver.get('https://www.douban.com')    # 使用封装的函数进行元素查找    find_element_by_id(driver, 'anony-nav')    # find_elements_by_id(driver, 'anony-nav')    # find_element_by_class(driver, 'anony-nav')    # find_element_by_xpath(driver, '//*[@id="anony-nav"]/h1/a')    # find_element_by_link_text(driver, '下载豆瓣 App')    # find_element_by_partial_link_text(driver, '豆瓣')    # find_elements_by_tag_name(driver, 'div')    # find_element_by_tag_name(driver, 'h1')    # find_element_by_link_text(driver, '下载豆瓣 App')    # 关闭WebDriver    driver.quit()if __name__ == "__main__":    retrieve_tags()

解析:如上代码在脚本通过“find_element_by_id”获取元素对象的时候就一直报错,断点查看“driver”对象是存在的,但是“find_element_by_id”不存在,是因为版本问题吗?

image.png

有没有大佬帮忙看一下,刚刚学,不是很懂,谢谢。

共有1个答案

公冶京
2024-05-17

应该是版本不同导致的API不同,见:
https://blog.csdn.net/weixin_51637785/article/details/125509483

 类似资料:
  • 问题内容: 我收到一个元素不可见的错误: 对于运行此代码时的每个find元素行: 页面登录部分的HTML如下所示: 问题答案: Selenium与用户与Web浏览器的交互方式类似。因此,如果您尝试与之交互的html元素不可见,那么最简单的解释是,当您编写硒代码时,您不会像普通用户那样与网页进行交互。 最后,这与网页的html无关,与DOM和元素的hidden属性无关。我建议您下载Firebug或其

  • 本文向大家介绍Python通过解析网页实现看报程序的方法,包括了Python通过解析网页实现看报程序的方法的使用技巧和注意事项,需要的朋友参考一下 本文所述实例可以实现基于Python的查看图片报纸《参考消息》并将当天的图片报纸自动下载到本地供查看的功能,具体实现代码如下:

  • 我有一个带有两个Selenium服务的Docker撰写文件: 我有另一个服务设置与量角器安装。 这是我的量角器配置文件: 这可以成功运行,但如果我将浏览器名称更改为firefox,将selenium地址更改为firefox容器,测试就会失败。 1) 选中时,includes coachcard指令应显示coachcard类型面板 消息:失败:在页面上找不到角度http://build-tool:8

  • 问题内容: 我有一台服务器A,上面装有eclipse,testNG,selenium和其他东西。我有另一个服务器B,上面装有Bamboo设置。 我能够在服务器A上运行一个testNG脚本,该脚本在我正在开发的Web应用程序上运行一组selenium测试。我使用了eclipse中显示的vm属性中的java命令,通过Bamboo在服务器B上创建了一个ssh任务。 但是,它似乎只是坐在那里而从未真正完成

  • 问题内容: 我遇到了NullPointerException问题。我已尽力而为,但无法解决此问题。我正在为我的项目实现POM模型(selenium)。 这一页: 测试类: 错误日志: 类: 有什么帮助吗? 问题答案: 您需要先初始化。如我所见,您正在创建但未初始化的引用,请尝试如下操作:- 注意 :-如果要初始化,则需要先下载chromedriver并设置系统属性,然后再将驱动程序初始化为:- 所

  • 我正在抓取这个网页的用户名,在滚动后加载用户 指向页面的Url:“http://www.quora.com/Kevin-Rose/followers" 我知道页面上的用户数(本例中的用户数为43812),如何滚动页面直到加载所有用户?我在互联网上搜索过同样的代码,在任何地方我都能找到几乎相同的代码行: driver.execute_script("window.scroll至(0)") 如何确定垂