精华内容
下载资源
问答
  • selenium driver.get超时

    2020-08-03 17:45:53
    今天跑爬虫遇到get超时了 p一个有效的解决方案 from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities #get直接返回,不再等待界面加载完成 desired_...

    今天跑爬虫遇到get超时了

    p一个有效的解决方案

    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    
    #get直接返回,不再等待界面加载完成
    desired_capabilities = DesiredCapabilities.CHROME
    desired_capabilities["pageLoadStrategy"] = "none"
    

    这里将pageLoadStrategy设置为none表示费阻塞模式,加载的最大时间到就会继续执行。

    展开全文
  • 报错信息: ![图片说明](https://img-ask.csdn.net/upload/201904/12/1555047735_858970.png) 奇怪的是我的代码已经加了try语句还是报错了,请高手麻烦看一下,谢谢了 ![图片说明]...
  • 大家都知道,这两个方法都是跳转到指定的url地址,那么这两个方法有什么不同呢?遇到这种情况,第一反应就是查查官方的文档。... This is done using an HTTP GET operation, and the method will block until ...

      大家都知道,这两个方法都是跳转到指定的url地址,那么这两个方法有什么不同呢?遇到这种情况,第一反应就是查查官方的文档。

      官方文档的说法是:Load a new web page in the current browser window. This is done using an HTTP GET operation, and the method will block until the load is complete. This will follow redirects issued either by the server or as a meta-redirect from within the returned HTML. Should a meta-redirect "rest" for any duration of time, it is best to wait until this timeout is over, since should the underlying page change whilst your test is executing the results of future calls against this interface will be against the freshly loaded page. Synonym for WebDriver.Navigation.to(String).

    上面的说明的地址是(http://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebDriver.html#get-java.lang.String-)

      大家看到我红色标识的“Synonym”没,这个单词的意思就是“同义词”,也就是说,官方文档的说法是这两者是一样的,马上转到Navigation.to的说明看看,说明是一模一样的。但是为什么网上会有那么多声音,认为这两者是有所不同呢?例如,有的认为,driver.get调用后,不具有前进后退的能力,而navigation则有这个能力,但我测试后发现,两者调用后均能前进后退。还有的认为,driver.get是要等浏览器加载完后才跳转,而navigation则是直接跳转,但从上面的说明以及自己简单测试看起来,navigation也是一样,都要等浏览器加载完后才跳转。诸如此类,网上总是有说法,认为两者大致一样,但还是有微小的差别。但是他们说的差异,我是试不出来,不知有哪位高手可以举个例子。

      既然再怎么百度也没用,那在官方文档和网上说法有差别的情况下,该相信谁呢?我始终无法选择相信任何一个,因为都没有十足的依据,想来想去,既然selenium是开源的,那好办,查源码。

      如果大家有看我们这个系列的第一篇文章,就知道我们引用的库有这样一个文件,client-combined-3.9.1.jar,没错,我们就是查这个。

      经过简单的查找,可以看出继承关系,ChromeDriver extends RemoteWebDriver, FirefoxDriver extends RemoteWebDriver,还有其他driver均是继承自RemoteWebDriver,而RemoteWebDriver  implements WebDriver ,WebDriver是一个接口。关键在于RemoteWebDriver这个类。

      打开这个类,我们找到get的定义:

    public void get(String url) {
        execute(DriverCommand.GET, ImmutableMap.of("url", url));
      }

        再继续找下去,我们找到Navigation的定义:

     public Navigation navigate() {
        return new RemoteNavigation();
      }

           从代码可以看到,RemoteNavigation是关键,再找下去,可以找到这个类的定义:

    private class RemoteNavigation implements Navigation {
    
        public void back() {
          execute(DriverCommand.GO_BACK);
        }
    
        public void forward() {
          execute(DriverCommand.GO_FORWARD);
        }
    
        public void to(String url) {
          get(url);
        }
    
        public void to(URL url) {
          get(String.valueOf(url));
        }
    
        public void refresh() {
          execute(DriverCommand.REFRESH);
        }
      }

      而里面,有我们想要的to方法的定义,至此,大家应该很清楚了吧。从上面代码可以看到,to的定义是这样的:

    public void to(String url) {
          get(url);
        }
    
        public void to(URL url) {
          get(String.valueOf(url));
        }

      也就是说,navigate().to()实际是在调用get(url),可见driver.navigate().to()和driver.get()是一模一样的的,说起来,driver.get()还要比navigate().to()快那么一点点呢。但为什么网上众说纷纭呢?我估计可能有两个原因,一个是Selenium以前的版本,两者确实有差别,另一个可能是浏览器(或版本)的差异造成的。

      但无论怎样,我现在可以宣布,在Selenium3.9.1下,driver.navigate().to()和driver.get()是一模一样的,没有任何差别。硬要说差别,那就是driver.get()比driver.navigate().to()快那么一点点,因为driver.navigate().to()实际是在调用driver.get()。

    转载于:https://www.cnblogs.com/devtester/p/8577903.html

    展开全文
  • driver.navigate().to()和driver.get()区别

    千次阅读 2017-03-16 18:37:25
    这里用到了driver.navigate().to()方法,特此mark下。下面是查询资料的收获:     最近用一个实际的web项目在学习Webdriver,关于新建一个备份任务的过程,先是有一个父页上button弹开一个子页,总共有4...
    在做一个后台管理系统的自动化测试,在登录时遇到了一些问题,比如浏览器认为当前url不安全,会有一个拦截,无法直接打开登录页面。这里用到了driver.navigate().to()方法,特此mark下。下面是查询资料的收获:
     
     
    最近用一个实际的 web项目在学习Webdriver,关于新建一个备份任务的过程,先是有一个父页上button弹开一个子页,总共有4个子页,必须前一个页上的必填信息录完,才能在这个页面触发下一个子页。
     
    如果在baseUrl1第一个子页录完信息,第一个子页有重命名校验和必填项校验。
     
    进入baseUrl2第2个子页,用driver.navigate().to(baseUrl2),直接跳转到第2个页,不受第一个子页的约束,直接导航到第2个页面的输入。
     
    这样会导致什么问题,第一个子页的信息是没有经过校验就进入下一个子页。这样,除了上面的重命名没有校验外,另外信息是否已经进入后台保存也是没有管的,而是直接在前台操作上直接进入下一个页面的操作,导致后台有可能数据丢失的情况,webdriver只管了前台界面的操作。
     
    怎么避免后台数据丢失呢,那么就不能用:driver.navigate().to(baseUrl2)方法,这种方法太危险,不管实际的页面逻辑。
    改用:driver.get(driver.getCurrentUrl()),这样通过实际的页面逻辑来获取URL结果,原理是当页面校验在前、后台通过后,点击“下一步”触发第二个子页时,会给出第二个子页的URL地址;如果页面校验在前、后台没有通过,那么就触发不了第二个页面,也就获得不了第二个页的URL地址,那么用driver.getCurrentUrl(),就获得不了最新页面的地址,也就无法跳转到第2个页面。如此,用driver.get(driver.getCurrentUrl())这样操作就保证跟页面的逻辑对应起来。也就不会脚本运行完成后,出现备份任务有时生成有时没有生成的情况。
    调整到后面的子页,也是用相同的方法:driver.get(driver.getCurrentUrl());
    但到第4个子页调整到父页时就不能用这个方法,因为driver.getCurrentUrl()这个获取不到父页的URL地址。只能再用一下driver.navigate().to(fatherURl),用这个方法,只要保证最后一个子页信息录入不存在丢失情况,就不影响备份任务单据的生成了。
    展开全文
  • 在执行自动化测试用例过程中,发现因为网络慢或其他原因导致driver.get(url) 时,页面一直在加载,页面没有加载完成就不会去继续执行下面的动作,但是实际上需要操作的元素已经加载出来了。 解决方法 第一步:使用...

    在执行自动化测试用例过程中,发现因为网络慢或其他原因导致driver.get(url) 时,页面一直在加载,页面没有加载完成就不会去继续执行下面的动作,但是实际上需要操作的元素已经加载出来了。

    解决方法

    第一步:使用 set_script_timeout() 设置等待最大时间。

    第二步:到了最大等待时间后页面如果仍然没有加载完成,执行js代码, driver.execute_script("window.stop()") 停止页面加载,执行下面的自动化测试步骤。
    代码如下:

    driver = self.driver
            # 设置页面最大加载时间
            driver.set_page_load_timeout(10)
            try:
                driver.get(self.base_url)
            except TimeoutException:
                print '!!!!!!time out after 10 seconds when loading page!!!!!!'
                # 当页面加载时间超过设定时间,通过js来stop,即可执行后续动作
                driver.execute_script("window.stop()")
    
    

     

    展开全文
  • driver.get_window_size() 获取屏幕的宽、高; driver.swipe()从坐标1滑动到坐标2,t毫秒时间内完成。 上下滑动时,坐标的x值可以不变,只改变坐标y值的大小。 左右滑动时,坐标的y值可以不变,只改变坐标x值的...
  • 先是有一个父页上button弹开一个子页,总共有4个子页,必须前一个页上的必填信息录完,才能在这个页面触发下一个子页...driver.get(driver.getCurrentUrl()),这样通过实际的页面逻辑来获取URL结果,原理是当页面校验在
  • 最近用一个实际的web项目在学习Webdriver,关于新建一个备份任务的过程,先是有一个父页上button弹开一个子页,总共有4个子页,必须前一个页上的...进入baseUrl2第2个子页,用driver.navigate().to(baseUrl2),直接跳转
  • 测混合应用获取当前测试手机的屏幕分辨率时,一定要切换到 Native 模式下,在webview 模式下是获取不到的。... float testMobileX = appiumUtil.driver.manage().window().getSize().width; float
  • java.sql.SQLException: No suitable driver at java.sql.DriverManager.getDriver(DriverManager.java:315) at com.mchange.v2.c3p0.DriverManagerDataSource.driver(DriverManagerDataSource.java:240) ...
  • driver.get("https://www.baidu.com"); driver.close(); //driver.quit(); } } 通过切换注销最后两行代码,分别运行,观察这两种方法的实际效果。当使用close方法的时候,因为只有百度首页这个tab,所以会...
  • java.sql.SQLException: No suitable ... at java.sql.DriverManager.getDriver(DriverManager.java:315) ~[na:1.8.0_191] at com.mchange.v2.c3p0.DriverManagerDataSource.driver(DriverManagerDataSource.j...
  • 使用selenuium chrome批量截图时,当某一个网页加载很慢时,get方法会阻塞到超时报错,一个报错后 标签页会停滞,url不再变化,而且之后的get也会不断报错:Timed out receiving message from renderer 在网上查阅...
  • driver.get('https://www.baidu.com')''' 法二: from selenium import webdriver #path = 'D:\\Chrome下载\\chromedriver_win32/chromedriver.exe' #path = 'D:\Chrome下载/geckodriver.exe' #driver = webdriver....
  • 这个是什么原因呢,有没有遇到同样问题的大神
  • driver.get("http://***") except: print "timeout" #执行js脚本 driver.execute_script("window.stop()") print driver.title user_name = driver.find_element_by_id("id_username") user_name.send_keys(...
  • self.driver.get("http://tpi.zhonju.cn"...self.driver.get_cookies() # 获取name=value格式的cookie cookie = [item["name"] + "=" + item["value"] for item in self.driver.get_cookies()] # join()连接字符串数...
  • driver.get_screenshot_as_file("D:\\Test\\1.png") # 截图,并设置保存路径 driver.save_screenshot() #保存截图 driver.get_screenshot_as_png() #截图,保存为二进制数据 driver.get_screenshot_as_base...
  • request.getCookies()取不到值原因

    万次阅读 2018-12-18 16:24:01
    现象: ... 但是用request.getCookies()却不行  Cookie mycookies[] = request.getCookies();中永远获取不到uid的值; (80端口号除外) 原因: 查了浏览器的具体cookie值,发现http://localhost:...
  • 在启动tomcat项目后出现java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.isValid(I)错误 我的解决是驱动包的错 把ojdbc14换成ojdbc6即可.
  • selenium自动化driver.switch_to.frame用法

    万次阅读 多人点赞 2019-05-28 15:30:08
    driver.get("http://mail.163.com/") driver.implicitly_wait(30) # 切换iframe # iframe = driver.find_element_by_tag_name("iframe") # driver.switch_to_frame(iframe) # driver.switch_to_frame...
  • appium driver 方法总结

    千次阅读 2017-06-29 14:28:00
    打印整个页面的元素:System.out.print(driver.getPageSource()); ________________________________________ 获取当前时间并截图,命名: public static String getScreen (){ String fileRoute= "//liyu/...
  • Python+Selenium-driver.page_source获取页面源码

    万次阅读 热门讨论 2021-03-19 17:33:14
    driver.page_source selenium的page_source方法可以获取到页面源码 跟爬虫有点相似,获取到页面资源,提取出我们需要的信息 案例 以煎蛋网为例,获取首页的全部title(获取页面源码 – 使用re正则提取需要的title) ...
  • get_screenshot_as_file(self, filename) save_screenshot(self, filename) 我使用的是第一种get_screenshot_as_file(self, filename),这里详细讲一下在使用该方法时遇到的坑。 原错误代码: def save_...
  • 今天项目启动的时候出现了:我用的是jdk1.8,Oracle的版本是:猜测是对jdk1.8的版本支持问题,就到Oracle官网看看驱动信息:下载下来导入本地Maven仓库,重新引入依赖即可。...
  • 报错:java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.isValid(I)Z 原因:之前用的jdbc是 ojdbc14,同事提供的,在spring boot学习的时候 发现无法连接oracle。看了maven,发现其实这个jar只能...
  • 在大多数测试环境中,网络或者测试服务器主机之间并不是永远不出问题的,很多时候一个客户端的一个跳转的请求会因为不稳定的网络或者偶发的其它异常hang...其实这种问题很好解决,只需要重写或者封装一下GET方法来实现
  • 关于appium+python里self.driver.tap([(x,y)])无效的原因 今天写自动化,找不到元素点位,只能通过坐标去点击,于是使用tap去实现。 但是运行到tap的时候出错,提示找不到元素。去看了源码,发现并没有写错格式。 ...
  • 代码:from selenium import webdriver ...driver.get("https://www.baidu.com") driver.find_element_by_xpath(".//*[@id='kw']").send_keys("python") driver.find_e...
  • DriverManager.getConnection一共有四个重载方法,前三个由public修饰,用来获取不同类型的参数,这三个getConnection实际相当于一个入口,他们最终都会return第四个私有化的getConnection方法,最终向第四个私有化...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 427,764
精华内容 171,105
关键字:

driver.get