Selenium ElementNotInteractiableException与ASP.NET报表查看器(Python)
我试图通过selenium从我们公司的ASP.NET ReportViewer中提取CSV报告。 我已经点击了导出下拉菜单(见图),但我无法点击csv按钮(将下载csv报告),我尝试等待,然后点击没有结果 我的代码:Selenium ElementNotInteractiableException与ASP.NET报表查看器(Python),python,python-3.x,selenium,drop-down-menu,reportviewer,Python,Python 3.x,Selenium,Drop Down Menu,Reportviewer,我试图通过selenium从我们公司的ASP.NET ReportViewer中提取CSV报告。 我已经点击了导出下拉菜单(见图),但我无法点击csv按钮(将下载csv报告),我尝试等待,然后点击没有结果 我的代码: driver = webdriver.Chrome(r'C:\Users\User\chromedriver.exe') url = 'Logon.aspx' # target url driver.get(url) # open url driver.find_ele
driver = webdriver.Chrome(r'C:\Users\User\chromedriver.exe')
url = 'Logon.aspx' # target url
driver.get(url) # open url
driver.find_element_by_xpath('//*[@id="ctl00_maincontent_txtUsername"]').send_keys('_user') # username cred
driver.find_element_by_xpath('//*[@id="ctl00_maincontent_txtPassword"]').send_keys('_pswd') # pass
driver.find_element_by_xpath('//*[@id="ctl00_maincontent_btnLogin"]').click() # click login btn
driver.find_element_by_xpath('//*[@id="JobsReports"]').click() # click job report btn
driver.find_element_by_xpath('//*[@id="ctl00_maincontent_TRCB3"]').click() # click 'Task details' check box
driver.find_element_by_xpath('//*[@id="ctl00_maincontent_RunReportsBtn"]').click() # click view report btn
time.sleep(3)
driver.switch_to.window(driver.window_handles[-1])
driver.implicitly_wait(120)
# driver.find_element_by_xpath('//*[@id="ReportViewer1_ctl05_ctl05_ctl00_ctl00"]/table/tbody/tr/td/input').click()
# driver.implicitly_wait(120)
driver.find_element_by_xpath('//*[@id="ReportViewer1_ctl05_ctl04_ctl00_ButtonLink"]').click() # click save dropdown
driver.implicitly_wait(3)
driver.find_element_by_xpath('/html/body/form/div[3]/div/span/div/table/tbody/tr[3]/td/div/div/div[4]/table/tbody/tr/td/div[2]/div[2]/a').click() # click 'CSV' to download
Traceback (most recent call last):
File "C:\Users\User\PycharmProjects\Onsite_automation\main.py", line 32, in <module>
driver.find_element_by_xpath('/html/body/form/div[3]/div/span/div/table/tbody/tr[3]/td/div/div/div[4]/table/tbody/tr/td/div[2]/div[2]/a').click() # click 'view report' btn
File "C:\Users\User\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 80, in click
self._execute(Command.CLICK_ELEMENT)
File "C:\Users\User\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "C:\Users\User\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\User\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
(Session info: chrome=90.0.4430.72)
HTML/Layout:
driver = webdriver.Chrome(r'C:\Users\User\chromedriver.exe')
url = 'Logon.aspx' # target url
driver.get(url) # open url
driver.find_element_by_xpath('//*[@id="ctl00_maincontent_txtUsername"]').send_keys('_user') # username cred
driver.find_element_by_xpath('//*[@id="ctl00_maincontent_txtPassword"]').send_keys('_pswd') # pass
driver.find_element_by_xpath('//*[@id="ctl00_maincontent_btnLogin"]').click() # click login btn
driver.find_element_by_xpath('//*[@id="JobsReports"]').click() # click job report btn
driver.find_element_by_xpath('//*[@id="ctl00_maincontent_TRCB3"]').click() # click 'Task details' check box
driver.find_element_by_xpath('//*[@id="ctl00_maincontent_RunReportsBtn"]').click() # click view report btn
time.sleep(3)
driver.switch_to.window(driver.window_handles[-1])
driver.implicitly_wait(120)
# driver.find_element_by_xpath('//*[@id="ReportViewer1_ctl05_ctl05_ctl00_ctl00"]/table/tbody/tr/td/input').click()
# driver.implicitly_wait(120)
driver.find_element_by_xpath('//*[@id="ReportViewer1_ctl05_ctl04_ctl00_ButtonLink"]').click() # click save dropdown
driver.implicitly_wait(3)
driver.find_element_by_xpath('/html/body/form/div[3]/div/span/div/table/tbody/tr[3]/td/div/div/div[4]/table/tbody/tr/td/div[2]/div[2]/a').click() # click 'CSV' to download
Traceback (most recent call last):
File "C:\Users\User\PycharmProjects\Onsite_automation\main.py", line 32, in <module>
driver.find_element_by_xpath('/html/body/form/div[3]/div/span/div/table/tbody/tr[3]/td/div/div/div[4]/table/tbody/tr/td/div[2]/div[2]/a').click() # click 'view report' btn
File "C:\Users\User\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 80, in click
self._execute(Command.CLICK_ELEMENT)
File "C:\Users\User\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "C:\Users\User\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\User\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
(Session info: chrome=90.0.4430.72)
错误:
driver = webdriver.Chrome(r'C:\Users\User\chromedriver.exe')
url = 'Logon.aspx' # target url
driver.get(url) # open url
driver.find_element_by_xpath('//*[@id="ctl00_maincontent_txtUsername"]').send_keys('_user') # username cred
driver.find_element_by_xpath('//*[@id="ctl00_maincontent_txtPassword"]').send_keys('_pswd') # pass
driver.find_element_by_xpath('//*[@id="ctl00_maincontent_btnLogin"]').click() # click login btn
driver.find_element_by_xpath('//*[@id="JobsReports"]').click() # click job report btn
driver.find_element_by_xpath('//*[@id="ctl00_maincontent_TRCB3"]').click() # click 'Task details' check box
driver.find_element_by_xpath('//*[@id="ctl00_maincontent_RunReportsBtn"]').click() # click view report btn
time.sleep(3)
driver.switch_to.window(driver.window_handles[-1])
driver.implicitly_wait(120)
# driver.find_element_by_xpath('//*[@id="ReportViewer1_ctl05_ctl05_ctl00_ctl00"]/table/tbody/tr/td/input').click()
# driver.implicitly_wait(120)
driver.find_element_by_xpath('//*[@id="ReportViewer1_ctl05_ctl04_ctl00_ButtonLink"]').click() # click save dropdown
driver.implicitly_wait(3)
driver.find_element_by_xpath('/html/body/form/div[3]/div/span/div/table/tbody/tr[3]/td/div/div/div[4]/table/tbody/tr/td/div[2]/div[2]/a').click() # click 'CSV' to download
Traceback (most recent call last):
File "C:\Users\User\PycharmProjects\Onsite_automation\main.py", line 32, in <module>
driver.find_element_by_xpath('/html/body/form/div[3]/div/span/div/table/tbody/tr[3]/td/div/div/div[4]/table/tbody/tr/td/div[2]/div[2]/a').click() # click 'view report' btn
File "C:\Users\User\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 80, in click
self._execute(Command.CLICK_ELEMENT)
File "C:\Users\User\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "C:\Users\User\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\User\PycharmProjects\pythonProject3\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
(Session info: chrome=90.0.4430.72)
回溯(最近一次呼叫最后一次):
文件“C:\Users\User\PycharmProjects\site\u automation\main.py”,第32行,在
驱动程序。通过xpath('/html/body/form/div[3]/div/span/div/table/tbody/tr[3]/td/div/div/div[4]/table/tbody/tr/td/div[2]/div[2]/a')查找元素。单击()
文件“C:\Users\User\PycharmProjects\pythonProject3\venv\lib\site packages\selenium\webdriver\remote\webelement.py”,第80行,单击
self.\u执行(命令。单击\u元素)
文件“C:\Users\User\PycharmProjects\pythonProject3\venv\lib\site packages\selenium\webdriver\remote\webelement.py”,第633行,在执行中
返回self.\u parent.execute(命令,参数)
文件“C:\Users\User\PycharmProjects\pythonProject3\venv\lib\site packages\selenium\webdriver\remote\webdriver.py”,执行中第321行
self.error\u handler.check\u响应(响应)
文件“C:\Users\User\PycharmProjects\pythonProject3\venv\lib\site packages\selenium\webdriver\remote\errorhandler.py”,第242行,在check\u响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.ElementNotInteractiableException:消息:元素不可交互
(会话信息:chrome=90.0.4430.72)
谢谢你的帮助 试试看
driver.find_element_by_xpath("//a[contains(@title, 'CSV (comma delimited)')]").click()
它应该解决一个定位器问题。
如果您决定使用隐式等待,请将其变大(10)。3秒的值太小了。谢谢你帮我找到了定位器@vitaliis, 我改变了:
driver.switch_to.window(driver.window_handles[-1])
driver.implicitly_wait(120)
致:
在脚本开头设置隐式等待在最后一行之前已经有3秒的隐式等待。如果对您有效,您可以接受任何答案。欢迎。如果我的回答有助于接受/支持它。