因需要收集页面数据,遂准备使用selenium爬取瓦斯阅读页面,

瓦斯网站使用的是ant design,元素定位非常困难,页面元素都没有ID,现在还只是能做到操作登录,不能自动打开订阅,查询某公众号,

下面的代码能实现打开登录窗,自动填写用户名密码登录,其中那个登录按钮也是找不到元素的,使用的办法是先获取当前活动的元素,再通过发送TAB和ENTER键完成对“登录”点击操作的:

 # 瓦斯的查询url
url = 'https://w.qnmlgb.tech' # 通过 get 方法打开查询页
driver.get(url) # 登录操作
loginXpath = '//*[@id="root"]/div/div/div/div[1]/div/div[2]/span'
loginPage = driver.find_element_by_xpath(loginXpath).click()
loginEmail = '//*[@id="username"]'
loginPwd = '//*[@id="password"]'
loginEmailInput = driver.find_element_by_xpath(loginEmail)
loginPwdInput = driver.find_element_by_xpath(loginPwd) loginEmailInput.send_keys('username')
loginPwdInput.send_keys('password')
WebDriverWait(driver, 30)
loginPwdInput.send_keys(Keys.TAB)
loginPwdInput.send_keys(Keys.ENTER)
WebDriverWait(driver, 30)
loginButtonXpath = '/html/body/div[3]/div/div/div/div[2]/div/div/div/form/div[3]/div/div/span/button'
loginButtonSelector = 'body > div:nth-child(9) > div > div > div > div.user-status-inner > div > div > div > form > div:nth-child(3) > div > div > span > button'
driver.switch_to.active_element.send_keys(Keys.TAB)
driver.switch_to.active_element.click()
WebDriverWait(driver, 30)
#driver.save_screenshot('searchtab.png')

最终实现效果是这样的:

而真实的页面应该是这样的:

是的,右边那一块在无头浏览器状态下貌似无法加载,至少我还没找到好的办法,而用普通模式,则会报错,

selenium.common.exceptions.ElementNotVisibleException: Message: element not interactable

其中页面焦点元素获取的方法可以参考这里:https://huilansame.github.io/huilansame.github.io/archivers/switch-to-active-element

如有好的办法欢迎留言讨论,谢谢,

--------------------------更新2019-1-31 15:20:22-----------------------------------

终于解决了前面提到的感觉页面没加载完的问题,

chromedriver打开页面时默认的分辨率为“{'width': 800, 'height': 600}”,有些页面可能因为元素定位设置不是相对自适应的,此时这个分辨率就不足以显示全部页面,所以通过设置分辨率来显示全部内容,

# 浏览器最大化
driver.maximize_window()
# 设置分辨率
driver.set_window_size(1280,800)

这样全部页面就可以显示出来了,底部的元素可以通过定位滚动条使目标元素位于中央,

使用selenium操作ant design前端的页面,感觉页面没加载完的更多相关文章

  1. 使用JavaScript实现在页面上所有内容加载完之前一直显示loading...页面

    Html <body class="is-loading"> <div class="curtain"> <div class=& ...

  2. VUE在页面没加载完的时候会显示原代码的处理方法

    CSS: [v-cloak] { display: none; } HTML : <div v-cloak> {{ message }} </div> 其中 v-cloak官方 ...

  3. javascript 实现页面加载完的操作

    document.onreadystatechange = function () { if (document.readyState == "complete") {//页面加载 ...

  4. 前端 | 页面触底自动加载 Vue 组件

    不管是 web 端还是移动端,信息流都是现在很流行的信息展示方式.信息流经常搭配自动加载一起使用以获得更好的使用体验. 最近在使用 Vue 开发过程中也遇到了首页信息流自动加载的需求.大致了解了一下几 ...

  5. ExtJS 等待两个/多个store加载完再执行操作的方法

    ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架. Extjs加载Store是异步加载的,这有很多好处.但是当我们要在两个或多个不同的store加载完再执行一些操作 ...

  6. js&jquery页面加载完执行

    js <script type=”text/javascript”> window.onload=function (){ var userName=”xiaoming”; alert(u ...

  7. 页面滚动动态加载数据,页面下拉自动加载内容 jquery

    <!DOCTYPE=html> <html> <head> < script src="js/jquery.js" type=" ...

  8. 测试页面,页面里边一次加载50张不同的图片,每张5M以上,查看浏览器的内存使用情况

    测试页面 1.需要你写个测试页面,页面里边一次加载50张不同的图片,每张5M,查看浏览器的内存使用情况 2.可以10张 递增的方式测试 3.图片需要缩放,比如所有图片缩放成600*800的比例 目的 ...

  9. Jquery页面滚动动态加载数据,页面下拉自动加载内容

    <!DOCTYPE=html> <html> <head> <script src="js/jquery.js" type="t ...

随机推荐

  1. Aras简单报表

    1.编辑Report对象类的窗体Report_Tab_Report,将xsl_stylesheet放到窗体上 2.新建报表 3.将编辑好的XSLT复制到xsl_stylesheet中. <xsl ...

  2. torchvision 作用

    1. 提供主流的model,和常用数据集 2. 对 torch.utils.data.Dataset进行扩充,针对不同类别图像放入不同文件夹的数据进行读取, torchvision.datasets. ...

  3. IDEA配置github并上传项目

    https://www.cnblogs.com/jinjiyese153/p/6796668.html

  4. BZOJ 5093[Lydsy1711月赛]图的价值 线性做法

    博主曾更过一篇复杂度为$O( k· \log k)$的多项式做法在这里 惊闻本题有$ O(k)$的神仙做法,说起神仙我就想起了于是就去学习了一波 幂与第二类斯特林数 推导看这里 $$ x^k=\sum ...

  5. vue-router组件重用 路由切换时的问题

    当一个组件被重用时,切换路由,该组件不会被销毁.该组件的created也不会被调用,如果在created中有获取数据的操作,切换路由后,就不会再获取新的数据了,界面上就没有刷新. 其实官方文档就有解决 ...

  6. IAR 关于C++几个内存的使用及释放的问题

    由于之前工作中常常遇到,但是遇到的时候工作总是要求比较紧急,没有那么多时间细细寻找有效的解决办法.现在了解到了一些,记录一些. 1. string vector 都是增量在堆里,所以只要有增量都是在堆 ...

  7. 区别 chown和chmod的用法

    本人总是习惯使用chmod,而把chown混淆. chown就是修改 第一列内容的 ,chmod是修改 第3,4列内容的. chown用法用来更改某个目录或文件的用户名和用户组的chown 用户名:组 ...

  8. Spring Cloud 2-Zuul 网关服务(六)

    Spring Cloud  Zuul  1.pom.xml 2.application.yml Application.java 1.pom.xml <!-- zuul 网关服务 --> ...

  9. input子系统 KeyPad-Touch上报数据格式与机制【转】

    转自:https://www.cnblogs.com/0822vaj/p/4185634.html -------------------------------------------------- ...

  10. 使用scrapy爬虫,爬取今日头条首页推荐新闻(scrapy+selenium+PhantomJS)

    爬取今日头条https://www.toutiao.com/首页推荐的新闻,打开网址得到如下界面 查看源代码你会发现 全是js代码,说明今日头条的内容是通过js动态生成的. 用火狐浏览器F12查看得知 ...