????????基本函数的讲解我就不列举了,网上有很多,我在写实例的时候也是参考学习了下面链接的文章,有兴趣的同学可以仔细看看。软件安装的话可以参看我的上一篇文章(不过我用的ma cOS,后面代码也可能会与windows的有一点点区别)。
参考链接:https://blog.csdn.net/weixin_36279318/article/details/79475388
? ? ? ? 不多说了,直接贴上我的入门代码:
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
from time import sleep
#获取浏览器句柄
browser=webdriver.Chrome()
#发送URL请求
browser.get("http://zwfw.gxzf.gov.cn/")
#设置浏览器大小
browser.maximize_window()
#搜索输入框输入"户口迁入" id是唯一的(如果id带长串数字为自动生成,不能用于定位)
input1=browser.find_element_by_id("hotword")
input1.send_keys("户口迁入")
#模拟组合键全选/复制 Crtl/Command+a Crtl+C
input1.send_keys(Keys.COMMAND+'a')
input1.send_keys(Keys.COMMAND+'c')
#!!注意:使用后会发现并没有复制到内容,因为在这个输入框使用Crtl/Command+a并不能框选到内容(有些页面是ok的,具体得看页面实现)
#模拟鼠标双击使用内容选中
ActionChains(browser).double_click(input1).perform()
input1.send_keys(Keys.COMMAND+'c')
#点击搜索一下按钮 class可能不唯一
browser.find_element_by_class_name("text_input_search").click()
#!!!注意:网页跳转到了新标签页面后,但代码仍定位在原标签页面
#获得当前窗口句柄
cur_handle = browser.current_window_handle
#获取当前窗口标题
print("1: "+browser.title)
#刷新浏览器
browser.refresh()
#绝对路径xpath定位输入框输入"户口迁出" 表达式格式:[@属性="值"]
input2=browser.find_element_by_xpath('//*[@id="hotword"]')
input2.send_keys("户口迁出")
#打印输入框value属性值
print("2: "+input2.get_attribute('value'))
#css样式定位
#搜索按钮并点击 格式: #id .class属性 标签
browser.find_element_by_css_selector("#redgo").click()
#输出页面最下面主办方并输出
element = browser.find_element_by_css_selector(".firstline")
print("3: "+element.text)
#css多层级定位
#标签与属性定位输入框清除内容 格式:标签[属性='值']
input2=browser.find_element_by_css_selector("input[id='hotword']")
input2.clear()
#父级id与后代id定位输入框输入"人才就业" 格式:#id #id
element=browser.find_element_by_css_selector("#barrierfree_container #hotword")
element.send_keys("人才就业")
#.class定位搜索按钮 格式:#id .class
search=browser.find_element_by_css_selector("#barrierfree_container .text_input_search")
search.click()
#超链接标签定位<a href=""></a>
link1=browser.find_element_by_link_text("个人服务")
link1.click()
# 定位"法人服务" partial_link_text支持模糊查询
link2=browser.find_element_by_partial_link_text("法人")
link2.click()
#通过tagName标签进行元素定位
spans = browser.find_elements_by_tag_name("span")
for span in spans:
if span.text=="联系我们":
print("4: "+span.text)
#页面内iframe切换
#使用name定位获取法人服务页面的热门服务窗口
iframe1=browser.find_element_by_name('frRmfwIframe')
#切换到内嵌iframe
browser.switch_to.frame(iframe1)
#回到外层主页面
#browser.switch_to.default_content()
#!!!网页刷新/跳转/回退后browser会回到默认最外层
browser.refresh()
#使用xpath获取注册登录页面
iframe2=browser.find_element_by_xpath('//iframe[@id="loginiframe"]')
#切换到内嵌注册登录iframe
browser.switch_to.frame(iframe2)
#点击登,跳转到登录页面
browser.find_element_by_id('goto').click()
#休眠3秒
sleep(3)
#浏览器后退
browser.back()
#经过回退,browser回到了最外层,可以直接定位外层元素
#页面经过跳转后,变量已经过时
input3=browser.find_element_by_id("hotword")
#模拟组合键粘贴Ctrl+v
input3.send_keys(Keys.COMMAND,'v')
#模拟输入回车键
input3.send_keys(Keys.ENTER)
#模拟鼠标在微信按钮上做悬停操作
wx=browser.find_element_by_id('zwApp')
ActionChains(browser).move_to_element(wx).perform()
sleep(3)
#获得所有打开窗口的句柄
all_handles = browser.window_handles
#遍历所有窗口
for handle in all_handles:
if handle != cur_handle:
browser.switch_to.window(handle)
if browser.title=="搜索结果":
#关闭当前窗口
browser.close()
sleep(3)
#关闭所有窗口
browser.quit()
|