小编use*_*709的帖子

无头浏览器和抓取 - 解决方案

我正在尝试为浏览器自动测试套件和能够抓取的无头浏览器平台列出可能的解决方案列表.


浏览器测试/清除:

  • Selenium - 浏览器自动化中的多语言旗舰,Python,Ruby,JavaScript,C#,Haskell等的绑定,用于Firefox的IDE(作为扩展),用于更快的测试部署.可以充当服务器并具有大量功能.

JAVASCRIPT

  • PhantomJS - JavaScript,带有屏幕捕获和自动化的无头测试,使用Webkit.从版本1.8开始,实现了Selenium的WebDriver API,因此您可以使用任何WebDriver绑定,并且测试将与Selenium兼容
  • SlimerJS - 与PhantomJS类似,使用Gecko(Firefox)代替WebKit
  • CasperJS - 基于PhantomJS和SlimerJS构建的JavaScript具有额外的功能
  • Ghost驱动程序 - 用于PhantomJSWebDriver Wire协议的JavaScript实现.
  • 新的 PhantomCSS - CSS回归测试.CasperJS模块,用于使用PhantomJS和 Resemble.js自动进行可视化回归测试.
  • WebdriverCSS -插件为 Webdriver.io自动化视觉回归测试
  • 新的 PhantomFlow - 通过测试描述和可视化用户流.Web用户界面测试的实验方法.
  • new trifleJS - 将PhantomJS API移植到使用Internet Explorer引擎.
  • 新的 CasperJS IDE (商业)

Node.js的

  • Node-phantom - 填补了PhantomJSnode.js之间的空白
  • WebDriverJs - Selenium团队对node.js的Selenium WebDriver绑定
  • WD.js - WebDriver/Selenium 2的节点模块
  • yiewd - …

selenium scrapy web-scraping phantomjs casperjs

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

Nginx:stat()失败(13:权限被拒绝)

我在使用安装在我的ubuntu 12.04机器上的nginx的特定目录时使用默认配置.

server {
        #listen   80; ## listen for ipv4; this line is default and implied
        #listen   [::]:80 default ipv6only=on; ## listen for ipv6

        index index.html index.htm;

        # Make site accessible from http://localhost/
        server_name localhost;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to index.html
                root /username/test/static;
                try_files $uri $uri/ /index.html;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }
...

...
}
Run Code Online (Sandbox Code Playgroud)

我只想要一个简单的静态nginx服务器来提供该目录之外的文件.但是,检查error.log我看到了

2014/09/10 …
Run Code Online (Sandbox Code Playgroud)

ubuntu nginx

87
推荐指数
8
解决办法
15万
查看次数

找到三个数字的最高产品

给定一系列的int,arrayofints找到最高的产品Highestproduct,你可以得到三个整数.int的输入数组总是至少有三个整数.

所以我从中弹出了三个数字arrayofints并将它们插入highestproduct:

Highestproduct = arrayofints[:2]
for item in arrayofints[3:]:
    If min(Highestproduct) < item:
        Highestproduct[highestproduct.index(min(Highestproduct))] = item
Run Code Online (Sandbox Code Playgroud)

如果minhighestproduct不到项目:更换当前数量的最低数量.

这最终会产生最高的产品,但显然有更好的解决方案.我的做法有什么问题?我的解决方案是O(n)吗?

python algorithm

26
推荐指数
1
解决办法
5835
查看次数

MS Bot Builder:如何将会话数据设置为主动消息?

我首先通过OAuthCallback方法中的短信通道向用户发送主动消息

 var connector = new ConnectorClient();
 Message message = new Message();
 message.From = new ChannelAccount { Id = Constants.botId, Address = "+12312311", ChannelId = "sms", IsBot = true };
 message.To = new ChannelAccount { Id = newUserId, Address = "+18768763", ChannelId = "sms", IsBot = false };
 message.Text = $"How are you doing? ";
 message.Language = "en";
 connector.Messages.SendMessage(message);

 IBotData myDataBag = new JObjectBotData(message);

 myDataBag.UserData.SetValue("Username", "Bob");
 myDataBag.PerUserInConversationData.SetValue("Newuser", "yes");
Run Code Online (Sandbox Code Playgroud)

然后在我的主Dialog.cs中尝试访问它

public static readonly IDialog<string> dialog = Chain
    .PostToChain()            
    .Switch(new Case<Message, IDialog<string>>((msg) => …
Run Code Online (Sandbox Code Playgroud)

c# botframework

15
推荐指数
1
解决办法
1639
查看次数

在大海捞针找到针,什么是更好的解决方案?

所以给了"针"和"这里有针但不是这个针干草堆"

我写

def find_needle(n,h):
    count = 0
    words = h.split(" ")
    for word in words:
        if word == n:
            count += 1
    return count
Run Code Online (Sandbox Code Playgroud)

这是O(n),但想知道是否有更好的方法?也许不是通过使用拆分?

您将如何为此案例编写测试以检查它是否处理所有边缘情况?

python dynamic-programming

14
推荐指数
2
解决办法
4315
查看次数

Bot框架:如何退出对话?

所以现在我正在使用Microsoft.Bot.Builder.Dialogs.Conversation.SendAsyncMicrosoft.Bot.Builder.Dialogs.Conversation.ResumeAsync实现一种暂停和恢复对话的方法,但似乎无法"退出"或回到之前的状态.它停留在对话对话框中.

我只是实现'取消'命令吗?如果是这样,我需要清除哪些数据才能恢复到原始状态?

    public static readonly IDialog<string> dialog = Chain
        .PostToChain()
        .Switch(
            new Case<Message, IDialog<string>>((msg) =>
            {
                var regex = new Regex("login", RegexOptions.IgnoreCase);
                return regex.IsMatch(msg.Text);
            }, (ctx, msg) =>
            {
                return Chain.ContinueWith(new ChatDialog(msg),
                            async (context, res) =>
                            {
                                var token = await res;
                                //var valid = await Helpers.ValidateAccessToken(token);
                                //var name = await Helpers.GetProfileName(token);
                                var name = "User";
                                context.UserData.SetValue("name", name);
                                return Chain.Return($"You are logged in as: {name}");
                            });
            })
        ).Unwrap().PostToUser();
Run Code Online (Sandbox Code Playgroud)

因此,如果我发送"登录",它将会开始一个新的ChatDialog对话,但它似乎陷入了这种状态.即使我尝试发送另一个命令,它也会继续要求登录.我是否实现了另一个Case类来处理"取消"命令?或者,当用户多次发送相同的"登录"命令时,它是否应自动取消对话?看起来有点笨重,必须单独发送'取消'命令.

c# botframework

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

uwsgi + nginx + flask:上游过早关闭

我在我的烧瓶上创建了一个端点,它从数据库查询(远程数据库)生成一个电子表格,然后在浏览器中将其作为下载发送.Flask不会抛出任何错误.Uwsgi不抱怨.

但是当我检查nginx的error.log时,我看到了很多

2014/12/10 05:06:24 [错误] 14084#0:*239436上游过早关闭连接,同时从上游读取响应头,客户端:34.34.34.34,服务器:me.com,请求:"GET/download/export .csv HTTP/1.1",上游:"uwsgi://0.0.0.0:5002",主机:"me.com",推荐人:" https://me.com/download/export.csv "

我像uwsgi一样部署

uwsgi --socket 0.0.0.0:5002 --buffer-size=32768 --module server --callab app
Run Code Online (Sandbox Code Playgroud)

我的nginx配置:

server {
     listen 80;
     merge_slashes off;
     server_name me.com www.me.cpm;

     location / { try_files $uri @app; }
       location @app {
          include uwsgi_params;
          uwsgi_pass 0.0.0.0:5002;
          uwsgi_buffer_size 32k;
          uwsgi_buffers 8 32k;
          uwsgi_busy_buffers_size 32k;
     }

}

server {
      listen 443;
      merge_slashes off;
      server_name me.com www.me.com;

    location / { try_files $uri @app; }
       location @app {
          include uwsgi_params;
          uwsgi_pass 0.0.0.0:5002;
          uwsgi_buffer_size 32k;
          uwsgi_buffers 8 32k; …
Run Code Online (Sandbox Code Playgroud)

python nginx flask uwsgi

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

javascript:从字符串中替换↵

我有一个非常令人讨厌的原始数据,?而且我无法str.replace('↵','')在那里?我试过它并且没有工作,我找不到任何关于这个因为当我搜索?它时没有显示ascii代码.

javascript

9
推荐指数
1
解决办法
2万
查看次数

Python:Selenium send_key 不能输入像 5 或 6 这样的数字

所以我在 google selenium 网站上看到了这个问题,但还没有解决。

当你 element.send_key('12345')

它将返回“123”。5 被解析为退格....

有解决办法吗?

使用最新的 selenium、chrome、chromedriver、python 2.7、ubuntu 12.04

python selenium

6
推荐指数
1
解决办法
3628
查看次数

chromedriver:ubuntu 14.04 64位上缺少各种lib依赖项

所以我正在尝试运行从中下载的chromedriver 2.20

 wget http://chromedriver.storage.googleapis.com/2.20/chromedriver_linux64.zip
Run Code Online (Sandbox Code Playgroud)

在我的ubuntu 14.04上

 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

我收到以下消息

./chromedriver: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

进一步挖掘我发现它缺少一大堆.

me@me:/var/chrome# ldd ./chromedriver
        linux-vdso.so.1 =>  (0x00007ffc0e5aa000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f472eb63000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f472e95f000)
        libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f472e70e000)
        libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f472e406000)
        libnss3.so => not found
        libnssutil3.so => not found
        libsmime3.so => not found
        libnspr4.so => not found
        libgconf-2.so.4 => not found
        libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f472e0d1000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 

(0x00007f472ddcd000)
            libm.so.6 …
Run Code Online (Sandbox Code Playgroud)

ubuntu selenium-chromedriver

6
推荐指数
1
解决办法
2433
查看次数