#conding=utf-8
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
search_windows=driver.current_window_handle
driver.find_element_by_link_text(u'登录').click()
driver.find_element_by_link_text(u'立即注册').click()
all_handles=driver.window_handles
#进入注册窗口
for handle in all_handles:
if handle !=search_windows:
driver.switch_to.window(search_windows)
print ('now registerwindow!')
driver.find_element_by_name("account").send_keys('username')
driver.find_element_by_name('password').send_keys('password')
time.sleep(2)
#进入搜索窗口
for handle in all_handles:
if handle ==search_windows:
driver.switch_to.window(search_windows)
print ('now sreachwindow!')
driver.find_element_by_id('TANGRAM__PSP_2__closeBtn').click()
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep(2)
driver.quit()
控制台信息:
now registerwindow!
Traceback (most recent call last):
File "F:/Deployment/Python/Selenium2/Part2/baidu5.py", line 20, in <module>
driver.find_element_by_name("account").send_keys('username')
File "C:\development\python351\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 330, in find_element_by_name
return self.find_element(by=By.NAME, value=name)
File "C:\development\python351\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 712, in find_element
{'using': by, 'value': value})['value']
File "C:\development\python351\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 201, in execute
self.error_handler.check_response(response)
File "C:\development\python351\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 181, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"name","selector":"account"}
(Session info: chrome=53.0.2785.143)
(Driver info: chromedriver=2.24.417431 (9aea000394714d2fbb20850021f6204f2256b9cf),platform=Windows NT 10.0.14393 x86_64)
Process finished with exit code 1
整体思路是对的,用法也比较高级;
但是代码有写错哦:
1.既然你的逻辑是如果当前handle不是搜索页面,那就跳转到注册页面,那么此处代码应改为:
2.既然你在注册页面输入,那么就应该获取注册页面的元素,而不是登录页面:
帮你修改了一下: