知识是需要经常温习的,不然是很容易遗忘的。
以前自己操作IFRAME,多窗口的时候,觉得很简单。半年没有操作自动化了,知识又还了回去。
写博客有一个好处,可以把自己记住的知识点记录下来,这样,以后自己来翻看的时候,可以很快的找到思路。
毕竟自己不是大神,所以还是多记录一下。
一,多表单切换:
例子:
driver.switch_to.iframe(""if"")
driver.find_element_by_css_selector("[name=kw].").click()
switch_to.frame()默认可以直接取表单的ID,name属性。如果iframe没有可用的id,name属性,则可以通过下面的方式进行的定位。
xf=driver.find_element_by_css_selector(".class") #先通过CSS定位到iframe
driver.switch_to.frame(xf) ##再将定位对象传给switch_to.frame()方法。
driver.find_element_by_css_selector(".class") ###再来操作元素。
driver.switch_to.parent_frame() ###完成了再当前表单上的操作,则跳出当前一级表单。
多窗口操作:
from selenium import webdriverdriver=webdriver.Chrome()driver.maximize_window()driver.implicitly_wait(10)import timedriver.get("https://www.baidu.com/") #获取当前页面句柄current_handle=driver.current_window_handledriver.find_element_by_css_selector("div#u1>a:nth-child(7)").click()driver.find_element_by_link_text(u"立即注册").click()time.sleep(1) #获得当前所有打开窗口的句柄all_handles=driver.window_handles #进入注册页面窗口for handle in all_handles: if handle!=current_handle: driver.switch_to_window(handle) driver.find_element_by_css_selector("[name=userName]").clear() driver.find_element_by_css_selector("[name=userName]").send_keys("username") driver.find_element_by_css_selector("[name=phone]").clear() driver.find_element_by_css_selector("[name=phone]").send_keys(1313313) time.sleep(1) #回到百度搜索页面for handle in all_handles: if handle==current_handle: driver.switch_to_window(current_handle) driver.find_element_by_css_selector("#TANGRAM__PSP_4__closeBtn").click() time.sleep(1) driver.find_element_by_css_selector("#kw").send_keys("selenium") driver.find_element_by_css_selector("#su").click() time.sleep(2) driver.quit()
直接上例子,看的更直观些。
原文地址:https://www.cnblogs.com/star12111/p/9784399.html
时间: 2024-11-10 08:06:09