zoukankan      html  css  js  c++  java
  • python之循环

    最近用selenium爬虫抓取东西的时候,遇到一个问题,就是要挨个点击某个目录,目录后面是链接。也就是逐条进入每一条目录里面,进行操作

    一时哽噎,竟然不知所措。想的是方向性问题,就是selenium如何决定先点击谁,再点击谁的问题。选择的方向性问题。先说解决方案

    就是根据目录所在的是那一页,哪一行,给它来个顺序排列。如果一共是200行,那好,第一次点击第一行,第二次点击第二行,第三次点击第三行。也就是一个简单的

    for  x in range(200)嘛,很简单。我感兴趣的是它背后的思想,selenium先点击谁,后点击谁。这里面其实是两个问题,第一个是谁和谁怎么区分,也就是第一行和第二行怎么区分,我们用数字给它绑定定位。第二个是先后问题,顺序问题,从谁开始点击,到谁点击结束。在循环遍历中,我们是通过顺序确定方向的,也就是从1开始到200结束或者从200开始到1结束。

    这里面既是循环遍历的作用。循环意味着重复,也就是通过循环解决重复性的工作,两个关键点,第一是确定重复多少次,第二是每次重复的区别性。

    然后我就想到了多窗口处理的时候,也是通过列表思想切换窗口的。

    from selenium import webdriver
    import time
    zhuye = obj.current_window_handle
    all_handles = obj.window_handles
    if len(all_handles)>1:
        for handle in all_handles:
            if handle != zhuye:
                obj.switch_to.window(handle)
    

     它的思想就是先获取所有的窗口,得到一个列表,然后通过遍历的方式,确定要切换的窗口。

    我们人切换浏览器窗口是怎么切换的呢?

    是发现两个窗口之间的区别,然后点击。

    我们有眼睛,可以直接观察到窗口之间的区别,但是selenium没有眼睛,如何判断区别呢,就是对比一下窗口角标是不是相等,方向性就是通过遍历的方式,依次向前推进。

  • 相关阅读:
    转载:SqlServer数据库性能优化详解
    复杂事件处理技术概览(一)
    Netty : writeAndFlush的线程安全及并发问题
    如何在RCP程序中添加一个banner栏
    AChecker + Selenium2对需要登录的页面进行自动化可访问性测试
    5分钟开启Esper之旅
    使SWT/JFace支持跨平台
    Ubuntu上Docker安装Trouble Shooting
    使Docker Container支持运行SWT程序
    Xcode5中如何切换Storyboards为xib
  • 原文地址:https://www.cnblogs.com/chaojiyingxiong/p/10265993.html
Copyright © 2011-2022 走看看