webdrvier_api_多窗口切换

多窗口:


以百度搜索“渗透吧”为例

方法一:

from selenium import webdriver

from selenium import time

dr = webdriver.Chrome()

dr.get("www.baidu.com")

dr.find_element_by_id("kw").send_keys("渗透吧")

dr.find_element_by_id("su").click()

sleep(3)

dr.find_element_by_xpath("//*[@id='1']/h3/a").click()#点击渗透吧

sleep(3)

#第二个窗口  继续定位 点击 进入贴吧 按钮(没有切换窗口继续定位)

#没有切换窗口意味着我们在第二个窗口操作时,而电脑用的是在第一个窗口的操作,不一致

#因演示所以加个异常处理try和except,这里的except跟try是唱反调的,代码从try开始运行,如果try报错就进行except

try:

    dr.find_element_by_link_text("进入贴吧").click()

    dr.refresh()

    sleep(3)

    dr.quit()

except:

    print("报错:需要切换窗口!")

#所以我们就要切换窗口来定位

多窗口切换

由默认窗口点击某个链接或者按钮,页面跳转到第二个窗口时,需要在定位脚本前增加如下代码告诉计算机我要切换窗口。

    #语法:dr.switch_to_window(dr.window_handles[1])

switch_to_window   切换窗口方法

.window_handles[1]  切换到第二个窗口

[1]   代表的是进入第二个窗口

[2]   代表的是进入第三个窗口        以此类推

###################正确的代码###########################

    #try和except是一个结构必须一起出现,pass表示什么都不做,代码正确或者错误都通过

    #try和else,这里的try和else是一起的,代码从try处开始运行如果不报错那么就会运行else

try:

    dr.switch_to_window(dr.window_handles[1])

    dr.find_element_by_link_text("进入贴吧").click()

    dr.refresh()

    sleep(3)

except:

    pass


else:

    print("页面跳转成功!!!可以关闭")

finally:

    dr.quit()


方法二:

通过get方法切换到第二个窗口     相当于在原有的窗口操作,没有多处的窗口

dr.get("得到的一个地址")

这个方法的意思是我们点击后多了个窗口,这个多出的窗口是个预期结果吧,我们将这个预期结果的窗口网址放到dr.get("窗口网址")里就行了


from selenium import webdriver

from selenium import time

dr = webdriver.Chrome()

dr.get("www.baidu.com")

dr.find_element_by_id("kw").send_keys("渗透吧")

dr.find_element_by_id("su").click()

sleep(3)

dr.find_element_by_xpath("//*[@id='1']/h3/a").click()

sleep(3)

dr.get("http://tieba.baidu.com/f?ie=utf-8&kw=%E6%B8%97%E9%80%8F&fr=search")

sleep(3)

dr.find_element_by_link_text("进入贴吧").click()

你可能感兴趣的:(webdrvier_api_多窗口切换)