多窗口:
以百度搜索“渗透吧”为例
方法一:
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()
网友评论