小编kev*_*ler的帖子

Selenium Webdriver可以在后台静默打开浏览器窗口吗?

我有一个运行许多测试的selenium测试套件,在每个新测试中,它打开了我打开的任何其他窗口顶部的浏览器窗口.在当地环境中工作时非常震动.有什么办法告诉selenium或操作系统(MAC)在后台打开窗口?

webdriver selenium-grid selenium-webdriver

139
推荐指数
8
解决办法
18万
查看次数

迭代所有DOM元素的最有效方法?

不幸的是,我需要迭代页面的所有DOM元素,我想知道最有效的技术是什么.我可以自己对这些进行基准测试,如果我有时间可能,但我希望有人已经经历过这个或有一些我没有考虑的选择.

目前我正在使用jQuery并执行此操作:

$('body *').each(function(){                                                                                                                            
      var $this = $(this);                                                                                                                                
      //do stuff                                                                                                                                         
});
Run Code Online (Sandbox Code Playgroud)

虽然它有效,但它似乎会导致客户端出现一些延迟.它也可以用更具体的jQuery上下文进行调整,比如$('body', '*') 我发现本机javascript通常比jQuery更快,我发现了这一点.

var items = document.getElementsByTagName("*");
    for (var i = 0; i < items.length; i++) {
        //do stuff
    }
Run Code Online (Sandbox Code Playgroud)

我假设本机选项更快.想知道是否有其他选择我没有考虑过.也许是一个递归选项,可以并行迭代子节点.

javascript optimization performance jquery dom

63
推荐指数
4
解决办法
6万
查看次数

如何获取mysql随机整数范围?

我试图为我在1到60之间选择的每一行生成一个随机整数作为计时器.

SELECT downloads.date, products.*, (FLOOR(1 + RAND() * 60)) AS timer
Run Code Online (Sandbox Code Playgroud)

我已经搜索并继续使用FLOOR函数作为如何选择范围内的随机整数.这给了我每一行1.我错过了什么?

我在mysql 5.0.75上

继续查询的其余部分我相信它可能是一个嵌套问题

SELECT *
FROM (
 SELECT downloads.date, products.*, FLOOR(1 + (RAND() * 60)) AS randomtimer, 
 (
 SELECT COUNT( * )
 FROM distros
 WHERE distros.product_id = products.product_id
 ) AS distro_count,

 (SELECT COUNT(*) FROM downloads WHERE downloads.product_id = products.product_id) AS true_downloads

 FROM downloads
 INNER JOIN products ON downloads.product_id = downloads.product_id
) AS count_table
WHERE count_table.distro_count > 0
AND count_table.active = 1
ORDER BY count_table.randomtimer , count_table.date DESC LIMIT …
Run Code Online (Sandbox Code Playgroud)

mysql random

48
推荐指数
1
解决办法
8万
查看次数

如何在特定的ajax调用上调用.ajaxStart()

我对站点文档进行了一些ajax调用,根据ajax状态显示或隐藏进度条

  $(document).ajaxStart(function(){ 
        $('#ajaxProgress').show(); 
    });
  $(document).ajaxStop(function(){ 
        $('#ajaxProgress').hide(); 
    });
Run Code Online (Sandbox Code Playgroud)

我想基本上在网站的其他部分覆盖这些方法,在这些部分上进行了很多快速的小型ajax调用,并且不需要进出弹出的进度条.我试图将它们附加到其他$ .getJSON和$ .ajax调用中或插入它们.我试过把它们链接起来,但显然这并不好.

$.getJSON().ajaxStart(function(){ 'kill preloader'});
Run Code Online (Sandbox Code Playgroud)

ajax jquery preloader progress-bar

47
推荐指数
6
解决办法
7万
查看次数

本地存储图像用于开发s3用于生产Rails Paperclip

我想在我的本地计算机上上传图像以进行开发,但是将它们存储在我的Amazon S3帐户上以进行生产.

upload.rb

if Rails.env.development?
  has_attached_file :photo, :styles => { :thumb => '40x40#', :medium => '150x200>', :large => '300x300>'},
                            :convert_options => { :thumb => "-quality 92", :medium => "-quality 92", :large => "-quality 92"  },
                            :processors => [:cropper]
else
  has_attached_file :photo, :styles => { :thumb => '40x40#', :medium => '150x200>', :large => '300x300>'},
                            :convert_options => { :thumb => "-quality 92", :medium => "-quality 92", :large => "-quality 92"  },
                            :storage => :s3,
                            :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
                            :path => ":attachment/:id/:style.:extension",
                            :bucket => …
Run Code Online (Sandbox Code Playgroud)

paperclip ruby-on-rails-3

20
推荐指数
2
解决办法
7871
查看次数

如何使用factory_girl模拟和存储活动记录before_create回调

我有一个ActiveRecord模型,PricePackage.这有一个before_create回调.此回调使用第三方API进行远程连接.我正在使用工厂女孩,并希望将这个api存根,以便在测试期间建立新工厂时不会进行远程调用.

我正在使用Rspec进行模拟和存根.我遇到的问题是我的工厂中没有Rspec方法.rb

模型:

class PricePackage < ActiveRecord::Base
    has_many :users
    before_create :register_with_3rdparty

    attr_accessible :price, :price_in_dollars, :price_in_cents, :title


    def register_with_3rdparty
      return true if self.price.nil?

        begin
          3rdPartyClass::Plan.create(
            :amount => self.price_in_cents,
            :interval => 'month',
            :name => "#{::Rails.env} Item #{self.title}",
            :currency => 'usd',
            :id => self.title)
        rescue Exception => ex
          puts "stripe exception #{self.title} #{ex}, using existing price"
          plan = 3rdPartyClass::Plan.retrieve(self.title)
          self.price_in_cents = plan.amount
          return true
        end
    end
Run Code Online (Sandbox Code Playgroud)

厂:

#PricePackage
Factory.define :price_package do |f|
  f.title "test_package"
  f.price_in_cents "500"
  f.max_domains "20"
  f.max_users "4"
  f.max_apps "10"
  f.after_build …
Run Code Online (Sandbox Code Playgroud)

activerecord mocking rspec-rails ruby-on-rails-3 factory-bot

17
推荐指数
1
解决办法
6293
查看次数

如何使用Jquery UI可选择查找所选元素

我正在寻找关于事件和ui对象的jQuery可选事件的信息:"选择"和"开始"作为参数.我在文档中找不到这个并且通过属性循环没有帮助.

$('#content_td_account').selectable({
    filter: 'li:not(".non_draggable")',
    selecting: function(event, ui) { 
    }
});
Run Code Online (Sandbox Code Playgroud)

具体来说,我想找到正在选择的元素并检查它们以查看它们的父元素是否相同.我假设这将在ui对象的某些地方.

javascript jquery jquery-ui jquery-plugins

15
推荐指数
2
解决办法
4万
查看次数

如何使用sed替换正则表达式捕获组?

我有一个大文件,有许多分散的文件路径,看起来像

lolsed_bulsh.png
Run Code Online (Sandbox Code Playgroud)

我想在扩展路径前添加这些文件名,如:

/full/path/lolsed_bullsh.png
Run Code Online (Sandbox Code Playgroud)

我很难匹配和捕捉这些.目前我正在尝试各种变化:

cat myfile.txt| sed s/\(.+\)\.png/\/full\/path\/\1/g | ack /full/path
Run Code Online (Sandbox Code Playgroud)

我认为sed有一些正则表达式或捕获组行为我不理解

regex bash sed

14
推荐指数
3
解决办法
3万
查看次数

为什么打字稿混合需要一个带有单个剩余参数any[]的构造函数?

我正在将一个功能性 mixin 项目从 javascript 迁移到 typescript。我所有的 javascript minxins 都有带有单个参数的构造函数签名constructor(props){}

在打字稿中,我按照https://www.typescriptlang.org/docs/handbook/mixins.html的官方文档定义了 mixin 构造函数类型 :

export type ConstrainedMixin<T = {}> = new (...args: any[]) => T;
Run Code Online (Sandbox Code Playgroud)

即使我将该 mixin 签名更改为:

export type ConstrainedMixin<T = {}> = new (props: any) => T;
Run Code Online (Sandbox Code Playgroud)

并更新实现 TSC 将抛出错误:

TS2545:mixin 类必须具有一个带有“any[]”类型的单个剩余参数的构造函数。

不幸的是,它无法为传递给构造函数的参数创建唯一的类型签名。我现在还需要迁移所有现有的构造函数。如何为 mixin 构造函数创建更明确的类型接口?

我创建了一个游乐场示例

在此输入图像描述

您可以在此屏幕截图中看到编译器在 MIXIN 定义上出现错误,并表示 mixin 类必须具有单个剩余参数。即使类型定义是:

type ConstrainedMixin<T = {}> = new (props: any) => T;
Run Code Online (Sandbox Code Playgroud)

在我的示例中,const mg = new MixedGeneric({cool: 'bro'}); 我想为该{cool: 'bro'}对象创建一个接口,并从 mixin 定义中强制执行它。我不确定如何正确执行此操作。如果构造函数是 …

typescript webpack typescript-typings

11
推荐指数
1
解决办法
7253
查看次数

工厂女孩的独立工厂

我有2个工厂.Beta_user和Beta_invite.基本上在Beta_user可以有效保存之前,我必须创建一个Beta_invite条目.不幸的是,这些模型没有干净的关联,但它们共享一个电子邮件字段.

Factory.sequence :email do |n|
  "email#{n}@factory.com"
end

#BetaInvite
Factory.define :beta_invite do |f|
  f.email {Factory.next(:email)}
  f.approved false
  f.source "web"
end

#User
Factory.define :user do |f|
  f.email {Factory.next(:email)}
  f.password "password"
end


#User => BetaUser
Factory.define :beta_user, :parent => :user do |f|
  f.after_build do |user|
    if BetaInvite.find_by_email(user.email).nil?
      Factory(:beta_invite, :email => user.email)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

所以在beta beta_user工厂中我试图使用after_build回调来创建beta_invite工厂.

然而,它似乎是异步或其他东西.可能会执行find_by_email获取?

如果我试试这个:

Factory(:beta_user)
Factory(:beta_user)
Factory(:beta_user)
Run Code Online (Sandbox Code Playgroud)

我得到一个失败声明,没有用户发送电子邮件的beta_invite记录.

如果相反,我尝试:

Factory.build(:beta_user).save
Factory.build(:beta_user).save
Factory.build(:beta_user).save
Run Code Online (Sandbox Code Playgroud)

我得到了更好的结果.好像调用.build方法并等待保存允许创建beta_invite工厂的时间.而不是直接调用Factory.create.文档说,在调用Factory.create的情况下,调用after_build和after_create回调.

任何帮助深表感谢.

更新:

因此,我使用的用户模型会before_validation调用检查是否存在测试版邀请的方法.如果我移动此方法调用before_save.它工作正常.有什么我在看的东西.factory_girl何时运行after_buildafter_create活动记录相关的回调before_validationbefore_save

activerecord rspec ruby-on-rails factory-bot

10
推荐指数
2
解决办法
5247
查看次数