Python自动化测试报错no such element: Unable to locate element几个解决办法

以tpshop商城为例

  1. add_cookie({‘name’:’ ‘,‘value’:’ '})
    在get登录页面后添加cookie,可以get到登录后的页面,而不需要使用用户名和密码登录
  2. 在系统–》设置–》商城设置–》网页信息–》联系人
    修改联系人的名字,点击保存
    在这里插入图片描述
    代码
import unittest
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By

'''
class TestBaidu(unittest.TestCase):
    def test_01(self):
        driver=webdriver.Chrome()
        driver.get('https://www.baidu.com/')
        driver.find_element('id','kw').send_keys('selenium')
        driver.find_element('id','su').click()
        sleep(10)
#ok
        '''
class Test_Tpshop(unittest.TestCase):
    def test_02(self):
        global driver;
        driver=webdriver.Chrome()

        #前台搜索
        #driver.get('http://www.myshop.com/index.php')
        #driver.find_element(By.ID,'q').send_keys('小米')
        #driver.find_element(By.XPATH,'//*[@id="searchForm"]/button').click()
        #sleep(5)

        #后台登录
        driver.get('http://www.myshop.com/index.php/Admin/Admin/login')#登录页面

        #cks=driver.get_cookies()
        #for ck in cks:
        #    print(ck)

        #添加登录后的cookie,F12--》application--》cookies
        driver.add_cookie({'name': 'admin_type',  'value': '1'})
        driver.add_cookie({'name': 'PHPSESSID', 'value': 'l2kehcdal9bu2bh4cmflhl4153'})
        driver.add_cookie({'name': 'workspaceParam', 'value': 'welcome%7CIndex'})  #工作空间参数
        driver.add_cookie({'name': 'is_mobile', 'value': '0'})
        driver.add_cookie({'name': 'city_id', 'value': '2'})
        driver.add_cookie({'name': 'province_id', 'value': '1'})
        driver.add_cookie({'name': 'district_id', 'value': '3'})

        driver.get('http://www.myshop.com/index.php/Admin/Index/index')  #登陆之后的页面
        #可以进入绕过登录进入到登陆之后的页面

        #点击“系统”
        driver.find_element(By.XPATH,'/html/body/div[1]/div[4]/ul/li[1]/a').click()

        #driver.add_cookie({'name': 'workspaceParam', 'value': 'index%7CSystem'})  #工作空间参数

        #点击“设置”
        driver.find_element(By.XPATH,'//*[@id="admincpNavTabs_system"]/dl[1]/dt/a/span').click()
        #点击“商城设置”
        driver.find_element(By.CSS_SELECTOR,'#admincpNavTabs_system > dl.active > dd > ul > li.active > a').click()
        #切换iframe
        driver.switch_to.frame('workspace')
        #点击“网站信息”
        driver.find_element(By.XPATH,'/html/body/div[3]/div[1]/div/ul/li[1]/a').click()
        #填写“联系人”
        driver.find_element(By.XPATH,'//*[@id="contact"]').send_keys('李四')
        #点击“确认提交”
        driver.find_element(By.XPATH,'//*[@id="handlepost"]/div/div/a').click()

无法定位元素的问题,报错:

在这里插入图片描述

解决办法

  1. 检查目前所有页面的句柄,如果联系人修改页面的句柄和当前句柄不是同一个,应当将页面句柄切换到当前需要执行操作的页面
handles=driver.window_handles
print(driver.window_handles)

#页面句柄切换
#driver.switch_to.window(handles[1])

执行完发现目前操作过的页面都是同一个句柄

  1. 使用ID、XPATH、NAME、CSS_SELECTOR、CLASS_NAME、LINK_TEXT、PARTIAL_LINK_TEXT、TAG_NAME中的其他元素定位

  2. 检查需要操作的部分是否包含有iframe,作为嵌入页面,如果是,需要使用switch_to.frame(‘frame的id’)

driver.switch_to.frame('workspace')

在这里插入图片描述
在“网页设置”之前添加以下代码,切换iframe
在这里插入图片描述
添加好后,重新运行代码,成功
在这里插入图片描述
4. 可能是当前需要查找的元素没有加载完成,需要在报错的代码前加等待时间

from time import sleep
sleep(5)
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
根据引用\[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 ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值