小编tho*_*dic的帖子

保持终端对焦

我有一个python脚本,它使用selenium来自动化网页,将焦点从需要用户输入的终端上拉开.

无论如何在python中以编程方式将焦点切换回终端?

如果重要的话,我将在Windows 7的Windows命令提示符下运行我的程序,但跨平台的答案将是最有用的.


尝试

查看pywin32win32 API 的包绑定,我有以下内容:

import win32console
import win32gui
from selenium import webdriver as wd

d = wd.Firefox()
win32gui.SetFocus(win32console.GetConsoleWindow())
win32gui.FlashWindow(win32console.GetConsoleWindow(), False)
input('Should have focus: ')
Run Code Online (Sandbox Code Playgroud)

SetFocuspywintypes.error: (5, 'SetFocus', 'Access is denied.')由于Microsoft删除了从另一个应用程序获取焦点的能力导致错误.

FlashWindow 似乎什么都不做.

python selenium cmd windows-7

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

Illuminate\Validation\ValidationException :给定的数据无效。在测试时尝试从响应中获取 json 时调用

我有以下测试:

public function testStoreMemberValidation()
{
    $response = $this->withExceptionHandling()->post('/api/members', [
        "name" => "Eve",
        "age" => "invalid"
    ], ['X-Requested-With' => 'XMLHttpRequest']);

    dd($response->json());
};
Run Code Online (Sandbox Code Playgroud)

我试图断言响应是验证错误的形式。控制器方法如下:

public function store(Request $request)
{
    $data = $request->validate([
        'name' => 'required|string',
        'age' => 'required|integer',
    ]);

    Member::create($data);
}
Run Code Online (Sandbox Code Playgroud)

但是,每当我调用任何调用$response->json()(大多数断言)的断言时,都会出现异常:

Illuminate\Validation\ValidationException :给定的数据无效。

如何在不抛出此错误的情况下对此响应执行断言?

请注意,我使用的是 Laravel 5.7。

laravel laravel-validation laravel-testing

7
推荐指数
1
解决办法
8267
查看次数

从方法对象中获取方法调用及其参数

使用 pythonsinspect模块,我已经隔离了一个方法对象,我现在需要遍历方法中的源代码以查找对某些其他方法的调用并获取它们的参数。

例如,假设在以下类中:

def my_method():
    print('hello')
    foobar('apple', 'pear', 6)
    print('world')
    foobar(1, 2, 3)
    return foobar('a', 'b')
Run Code Online (Sandbox Code Playgroud)

我需要提取传递给的参数列表foobar()

[('apple', 'pear', 6), (1, 2, 3), ('a', 'b', None)]
Run Code Online (Sandbox Code Playgroud)

可以假设所有参数都是硬编码的而不是动态的。

给定inspect包中的方法对象,我如何检查所述方法中的方法调用?

尝试

  • 我试过使用正则表达式,inspect.getsourcelines(method)但是如果参数语法发生变化,这会中断。
  • 我已经研究了带有 pythonsast模块的抽象语法树,但还没有找到任何解决方案。
  • 必须有一种方法来完成这个使用,inspect但我再次没有找到任何解决方案。

python abstract-syntax-tree inspect python-2.7

5
推荐指数
1
解决办法
1870
查看次数

如何触发任何箭头键

我有一个带滑块的应用程序(HTML5,JavaScript,Jquery,jquery Mobile).手柄可以通过触摸移动,您可以浏览1861年到2000年.我的地图上有符号,根据年份可见/不可见.看我的示例图片.

当用户单击特定按钮("前进")时,我还希望手柄移动.句柄应该每年进行,直到用户点击不同的按钮.我只需点击一下即可处理该句柄+ 1年,并且句柄,年份和地图会更新已更改的年份.

	function moveLeft(){
	var slider1 = $("#slider").val();
	var $slider = $("#slider");
	slider1++;
	$slider.val(slider1).slider("refresh");
	var wert1 = slider1;
		var start = new Date().getTime(); //start = 
		hideLayer2(wert1, start); 
		$('#jahr').text(wert1); 
		var $ausgabe = $("#ausgabe");
		$ausgabe.text(wert1); 
		gewaehltesJahr = wert1;
Run Code Online (Sandbox Code Playgroud)

我为这个函数构建了一个for循环(for(i = slider1; i <2000; i ++))但是句柄和一切只会更新,如果函数到达2000年.我想看到每一年的更新.即使我使用调试器查看代码,它只会在完成循环并退出函数时更新年份,处理和映射.

下面的代码例如:如果我在1861年开始并初始化该函数,则句柄和地图将在最后一行的警报"alert("vor")之后直接跳转到1870.

function vor(){ 
	var slider1 = $("#slider").val();
	var $slider = $("#slider");
	for( var s = slider1; s < 1870; s++){	
		//$slider.val(s).slider("refresh");
		$("#slider").slider('value',s);
		alert(s);
		var wert1 = s;
		var start = new Date().getTime(); //start = …
Run Code Online (Sandbox Code Playgroud)

javascript jquery html5

5
推荐指数
1
解决办法
88
查看次数

测试 JavaScript 执行期间互联网连接丢失

我的问题

我希望测试脚本如何在执行过程中处理互联网连接丢失的情况。在较低级别,我只需要在脚本中的某个点之后导致许多网络请求失败。

我试图使这个测试尽可能端到端,而不模拟任何 javascript 单元。

我对如何实现这一目标的想法

Chrome 的开发工具中的网络选项卡下有一个有用的切换开关,可以模拟互联网连接丢失的情况。debugger我想从我正在执行的脚本中切换它(与如何在源选项卡下触发断点类似)。

我怀疑这并不容易,因为如果网页可以触发此操作,则会造成严重的安全漏洞。然而,如果有任何办法可以将 Chrome 破解到可能的状态,可能使用扩展程序或 Chromium,我会洗耳恭听。

有没有办法从 JavaScript 切换 Chrome“离线”开发工具?

如果失败了,还有其他方法可以模拟连接丢失/导致网络请求从 javascript 失败吗?(顺便说一句,我还没有嫁给 Chrome)

javascript acceptance-testing google-chrome-extension google-chrome-devtools

5
推荐指数
1
解决办法
1291
查看次数

Mockery对象参数验证问题

考虑一下示例类(对于它如此复杂而道歉,但它尽可能地模糊):

class RecordLookup
{
    private $records = [
        13 => 'foo',
        42 => 'bar',
    ];

    function __construct($id)
    {
        $this->record = $this->records[$id];
    }

    public function getRecord()
    {
        return $this->record;
    }
}

class RecordPage
{
    public function run(RecordLookup $id)
    {
        return "Record is " . $id->getRecord();
    }
}

class App
{
    function __construct(RecordPage $page, $id)
    {
        $this->page = $page;
        $this->record_lookup = new RecordLookup($id);
    }

    public function runPage()
    {
        return $this->page->run($this->record_lookup);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想在模拟RecordPage时测试App:

class AppTest extends \PHPUnit_Framework_TestCase
{
    function testAppRunPage()
    {
        $mock_page …
Run Code Online (Sandbox Code Playgroud)

php phpunit mockery

4
推荐指数
1
解决办法
1650
查看次数

如何检查Iron Router Meteor中的当前路由

我正在设置一个身体助手,用于Iron Router用作{{route}}:

Template.body.helpers({
  route: function(){
    alert(Router.current().route.getName());
  }
});
Run Code Online (Sandbox Code Playgroud)

Router.current().route.getName()返回undefined而不是"/ thirdPage /".

javascript templates meteor iron-router

3
推荐指数
1
解决办法
2062
查看次数

在python中追加错误

我正在使用JuliaBox在python 2中运行python代码.

我的代码如下:

l=[]

l.append(5)
Run Code Online (Sandbox Code Playgroud)

以下是我得到的错误:

type Array没有字段追加

但是我已经append在python文档中使用了它.https://docs.python.org/2.6/tutorial/datastructures.html

我哪里做错了?

在此输入图像描述

python list julia

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

Java Script Regex ^ [^ 0]\d {1,4} $

我希望使用JavaScript中的正则表达式匹配1到4位数的数字,该数字不以0开头.我试过了:

^[^0]\d{1,4}$
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

{1,4}JavaScript中有任何问题吗?它应该检查数字匹配1到4次,不应该吗?

javascript regex

-3
推荐指数
2
解决办法
756
查看次数