python3+selenium报错 Message: no such element: Unable to locate element

一、报错现象:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"link text","selector":"升级备份"}

Unable to locate element(定位不到元素)

二、可能原因如下:

1、确定定位该元素是否正确,可以换种方式定位改元素,具体方法可以参考本人另一篇博客Python3+selenium自动化元素定位方法及举列

2、浏览器打开后没有找不到元素程序就会自动执行下一步,建议在找该元素之前前加上等待时间time.sleep(3)

3. 确定目标网址中是否包含iframe,若有iframe,需要定位iframe(打开浏览器开发者工具模式,按Ctrl+h 然后搜索iframe)根据具体情况填写switch_to.frame()

driver.switch_to.frame(0)

判断URL中是否有iframe标题

 三、使用举例:

绿盟设备包含iframe

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

# 忽略证书告警
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')  # 忽略证书告警
options.add_argument('--no-sandbox')  # root 权限
options.add_argument('--disable-dev-shm-usage')  # 关闭开发者模式
# options.add_argument('--headless')  # 无图像化界面:"
# options.add_argument('blink-settings=imagesEnabled=false')  # 不加载图片
options.add_argument('--disable-gpu')  # 关闭GPU


# 启动浏览器
driver = webdriver.Chrome(options=options)

# 登陆绿盟防火墙web控制台
driver.get('https://192.168.200.1:8443/user/requireLogin')

# 等待账号密码输入框加载完毕
WebDriverWait(driver, 10).until(
    expected_conditions.presence_of_element_located((By.CSS_SELECTOR, '#username')))

# 输入账号密码
driver.find_element(by=By.CSS_SELECTOR, value='#username').send_keys('weboper')
driver.find_element(by=By.CSS_SELECTOR, value='#password').send_keys('admin@123')

# 点击登陆按钮
driver.find_element(by=By.CSS_SELECTOR, value='#login.submit').click()
time.sleep(20)

# 备份配置
driver.find_element(By.CSS_SELECTOR, "#menutitle2 > span").click()
driver.find_element(By.ID, "two21").click()
driver.switch_to.frame(0)  #包含iframe
driver.switch_to.frame(0)  #包含iframe
driver.find_element(By.CSS_SELECTOR, ".cmn_btn").click()
time.sleep(100)
# 关闭浏览器
driver.quit()

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]中提供的信息,报错"Message: no such element: Unable to locate element"表示无法定位到元素。你已经确认了xpath路径没有问题,但仍然遇到了这个错误。根据引用\[2\]的建议,你可以检查是否有iframe嵌入页面,如果有的话,需要使用`switch_to.frame('frame的id')`来切换到iframe中进行操作。另外,根据引用\[3\]的解决办法,你可以检查当前所有页面的句柄,如果联系人修改页面的句柄和当前句柄不是同一个,应将页面句柄切换到当前需要执行操作的页面。你可以使用`driver.window_handles`来获取所有页面的句柄,并使用`driver.switch_to.window(handles\[1\])`来切换到需要操作的页面。这些方法可能有助于解决你遇到的问题。 #### 引用[.reference_title] - *1* [Message: no such element: Unable to locate element:selenium报错](https://blog.csdn.net/qq_40300123/article/details/124016128)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Python自动化测试报错no such element: Unable to locate element几个解决办法](https://blog.csdn.net/quzhen97/article/details/115346622)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值