[Selenium问题][待解决]

期望通过python+selenium获取到网页中元素,并能够自动点击它实现自动化测试。

但是我在调用时总是最后报错,请求大侠帮忙!不胜感激!

一、环境

1、公司内部的网页,iframe中嵌套了一个网页,网页中的一个循环的表格

2、表格中每一数据行(不是表头行)的第一个表格内的元素,实现自动点击

问题:现在使用xpath(xpath路径我是在浏览器自带的xpath复制的,应该无措)总是无法获取到它

二、我的代码

#-*- coding:utf-8 -*-
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time

'''
1、添加chrome_driver驱动路径
'''
chrome_driver=r"D:\Program Files\Python3.8\Lib\site-packages\selenium\webdriver\chrome\chromedriver.exe"#后面要修改为相对路径
driver=webdriver.Chrome(executable_path=chrome_driver)

driver.get("http://172.29.10.30/xmgl/index.jsp")

#登录模块
driver.find_element_by_id('opcode').clear()
driver.find_element_by_id('opcode').send_keys('Y00793')
driver.find_element_by_id('password').clear()
driver.find_element_by_id('password').send_keys('1')
driver.find_element_by_id('b-submit').click()
time.sleep(3)#此处睡三秒,有同事没有修改密码,此处让其有时间手动点击
#点击左侧:工时管理--工时确认
driver.find_element_by_id('menu-tree_4_switch').click()
time.sleep(1)
print("sleep1秒后,点击工时确认按钮")
driver.find_element_by_id('menu-tree_10_a').click()

#对右侧的工时确认列表进行循环点击确认
driver.switch_to.frame("main-frame")
print("执行到main-frame这一步了")
driver.find_element_by_xpath('//*[@id="list1"]/tbody/tr[2]/td[1]/label/a').click()

就是最后一行代码报错了,提示我找不到对应的element

三、网页源码和报错

网页源码1:

[Selenium问题][待解决]_第1张图片

网页源码2:

[Selenium问题][待解决]_第2张图片

:3、报错信息:

DevTools listening on ws://127.0.0.1:63098/devtools/browser/0dbc7ae8-d3cb-458f-b4ba-1fc79a2cd94a
sleep1秒后,点击工时确认按钮
执行到main-frame这一步了
Traceback (most recent call last):
  File "autoCommit.py", line 30, in
    driver.find_element_by_xpath('//*[@id="workdate1"]').send_keys('2020-01-23')
  File "D:\Program Files\Python3.8\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "D:\Program Files\Python3.8\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
    return self.execute(Command.FIND_ELEMENT, {
  File "D:\Program Files\Python3.8\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "D:\Program Files\Python3.8\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":"xpath","selector":"//*[@id="workdate1"]"}
  (Session info: chrome=79.0.3945.130)

你可能感兴趣的:(问题,selenium)