關於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方法切換到新標簽頁后就可以做其他操作了。

 

  

  

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM