selenium的使用
下载相应浏览器驱动
放在python的根目录下
初始化
1 | from selenium import webdriver |
需下载谷歌浏览器驱动chromedriver。注意不同版本浏览器需下载相应的驱动。
将下载的chromedriver解压后移动到/usr/local/bin
输入文本及点击按钮
1 | def search(): |
利用pyquery解析网页
1 | from pyquery import PyQuery as pq |
模拟手机点击
1 | TouchActions(browser).tap(return_name).perform()#模拟手机点击tap里为获取元素,broswer:浏览器实例 |
进行翻页操作
1 | browser.execute_script("window.scrollBy(0, 10000)") |
使用jieba统计词频
1 | seg_list = jieba.lcut(txt)#txt:文本输入,返回list |
对字典排序
1 | result = sorted(seg_dic.items(),key=lambda e:e[1],reverse=True)[:15]#True降序排列 |
对下拉列表进行选择
select类型:1
2
3
4
5
6
Select(driver.find_element_by_id("gender")).select_by_index(1)
Select(driver.find_element_by_id("gender")).select_by_value("2")
Select(driver.find_element_by_id("gender")).select_by_visible_text("Male")
非select类型:
- 1、若列表隐藏则先模拟点击输入框
- 2、然后通过CSS_SELECTOR选择所在的li下的span
- 3、通过文字判断是哪个li
1
2
3
4#全部文字
browser.find_element_by_xpath("//*[text()='IPC']").click()
#部分文字
browser.find_element_by_xpath("//*[contains(text(),'花呗')]").click()
常见问题
定位页面元素
有id使用id定位,其次可以一般可以用xpath定位所有元素。
打开一个新链接(窗口)时,页面资源没有变化。
当打开一个新页面时,page_source还是之前页面的,会导致一直定位不到当前页面的元素。
解决办法:切换到当前页面代码如下:1
2handle = broswer.window_handles;
broswer.switch_to.window(handle[-1])#切换到当前窗口
调整页面等待时间
broswer.set_page_load_timeout(7)#加载等待时间
超出时间未加载完页面可捕获异常进一步处理
定位iframe标签里边元素 (html里面嵌html)
如果直接用元素id或xpath之类定位往往会报元素不可见或者超时,解决办法为:
将页面资源切换到iframe里面1
broswer.switch_to.frame("contentframe")
用完后切回1
broswer.switch_to.default_content()
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com
文章标题:selenium的使用
本文作者:子非鱼
发布时间:2018-11-04, 11:19:29
最后更新:2018-10-07, 09:05:48
原始链接:https://Wangsr.cn/2018/11/04/2018-2018-03-01-selenium的使用/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。