python - selenium2切换窗口失败

 JieGe木 发布于 2022-10-27 11:52
#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 
    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 个回答
  • 整体思路是对的,用法也比较高级;
    但是代码有写错哦:
    1.既然你的逻辑是如果当前handle不是搜索页面,那就跳转到注册页面,那么此处代码应改为:

    #进入注册窗口
    for handle in all_handles:
        if handle !=search_windows:
           driver.switch_to.window(handle)
           print ('now register window!')

    2.既然你在注册页面输入,那么就应该获取注册页面的元素,而不是登录页面:

    for handle in all_handles:
        if handle !=search_windows:
           driver.switch_to.window(handle)
           print ('now registerwindow!')
           driver.find_element_by_name("userName").send_keys('username')
           driver.find_element_by_name('phone').send_keys('password')
           ……
           time.sleep(2)

    帮你修改了一下:

    #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(handle)
           print ('now registerwindow!')
           driver.find_element_by_name("userName").send_keys('username')
           driver.find_element_by_name('phone').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()
    2022-11-12 01:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有