我使用Webdriver-Python编写自动化点击“开始日期”'图标,'结束日期'图标将日期填入这些字段。
这是我网站上的日期字段:
|Period:|_____(1)_____[Start Date icon]|_____(2)_____[End Date icon]
(1),(2)是文本字段,我们可以直接输入日期而不是点击日期图标。
单击StartDate / EndDate图标,弹出日历窗口(HTML代码中的标题为日历)将显示,选择日期后,将写入(1)/(2)并弹出消失。 / p>
在我的代码中,我会点击开始日期,然后选择一个日期,然后点击结束日期'图标。但是Webdriver无法找到“结束日期”的位置。图标。尝试点击结束日期'首先是图标,然后是开始日期,它找不到“开始日期”'图标位置
driver = webdriver.Chrome()
driver.get("http://local/time")
assert "ABM - Activity Reference" in driver.title
start_Date= driver.find_element_by_xpath("//*[@id='startDate']/img")
start_Date.click()
driver.window_handles
driver.switch_to_window(driver.window_handles[1])
start_date_Choose = driver.find_element_by_xpath("/html/body/center/table[2]/tbody/tr[5]/td[4]/a")
start_date_Choose.click()
time.sleep(5)
end_Date= driver.find_element_by_xpath("//*[@id='endDate']/img")
end_Date.click()
这是控制台日志:
Traceback (most recent call last):
File "C:\Python27\Eclipse_workspace\Robot\src\Excel\test.py", line 20, in <module>
end_Date= driver.find_element_by_xpath("//*[@id='endDateTxt2']/img")
File "C:\Python27\lib\site-packages\selenium-2.41.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 223, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "C:\Python27\lib\site-packages\selenium-2.41.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 655, in find_element
{'using': by, 'value': value})['value']
File "C:\Python27\lib\site-packages\selenium-2.41.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 166, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium-2.41.0-py2.7.egg\selenium\webdriver\remote\errorhandler.py", line 164, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchWindowException: Message: u'no such window: target window already closed\nfrom unknown error: web view not found\n (Session info: chrome=35.0.1916.114)\n (Driver info: chromedriver=2.10.267521,platform=Windows NT 6.0 SP2 x86)'
答案 0 :(得分:1)
切换窗口并选择日期后,您需要选择旧窗口。 这可以通过在切换之前保存旧窗口来完成。
current=window.handles[0]
选择日期后:
driver.switch_to_window(current)