zoukankan      html  css  js  c++  java
  • 关于Python+selenium 定位浏览器弹窗元素

    一,div弹窗
    div弹窗是浏览器中比较好定位的弹窗,定位的方法与普通的元素一样。不过这里会有一个坑,明明可以找到这个按钮,但是就是定位不到。这个就是因为当前有div弹窗弹出的时候,需要设置一下等待时间,等页面元素加载完毕,再去做其他操作。
    这里用百度登陆为例子:

    rom selenium import webdriver
    import time
    
    def login_baidu(url,username,password):
        driver.get(url)
        driver.find_element_by_xpath('//*[@id="u1"]/a[7]').click()
        time.sleep(2)
        driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__footerULoginBtn"]').click()
        time.sleep(2) # 弹窗出现后,使页面等待2S
    
        login_username = driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__userName"]')
        login_username.click()
        login_username.send_keys(username)
    
        login_passwork = driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__password"]')
        login_passwork.click()
        login_passwork.send_keys(password)
    
        driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__submit"]').click() # 登陆按钮
    
    if __name__ == "__main__":
        driver = webdriver.Firefox()
        username = r'xxx@qq.com'
        password = r'xxxx'
        url = r'https://www.baidu.com'
        login_baidu(url,username,password)
    

      二,新标签页弹窗
    新标签页弹窗,则需要进行窗口的切换。此处第一个窗口打开百度首页,在打开一个新窗口打开京东首页,在两个窗口之间进行切换。切换到不同的窗口之后,就可以用常规的方法进行元素的定位。

    from selenium import webdriver
    import time
    
    def open_window1():
       driver.get("https://www.baidu.com")
       time.sleep(2)
    
    def open_window2(): # 用JS的方法打开新窗口,模拟新标签页弹窗
        js = "window.open('https://www.jd.com')"
        driver.execute_script(js)
        time.sleep(2)
    
    def Switch_Window():
        handles = driver.window_handles
        print("打印当前已打开的窗口:"+str(handles))
        while(1): # 在两个窗口之间做切换动作
            driver.switch_to.window(handles[0])
            time.sleep(5)
            driver.switch_to.window(handles[1])
            time.sleep(5)
    
    if __name__ == "__main__" :
        driver = webdriver.Firefox()
        open_window1()
        open_window2()
        Switch_Window()
    
    

     

    handles = driver.window_handles # 获取当前打开的所有窗口的句柄
    driver.switch_to.window(handles[N]) # 切换到其中一个窗口
    其中,获取的句柄下标从0开始,即第一个窗口为[0]、第二个窗口为[1],
    如此类推。使用switch_to.window方法切换到新标签页后就可以做其他操作了。

      

      

     

      

  • 相关阅读:
    这个是我得标题:1548669163
    Mahout学习
    MySQL
    Ubuntu
    java小程序100例
    java实现链表从尾部输出
    空格替换
    java 实现二维数组查找
    JAVA实现分页
    java 程序参数详解
  • 原文地址:https://www.cnblogs.com/chenlimei/p/11252686.html
Copyright © 2011-2022 走看看