小编ale*_*cxe的帖子

可以在xlsxwriter中更改工作表顺序吗?

我有一个脚本按顺序创建以下几对工作表:

WorkSheet (holds data) -> ChartSheet using WorkSheet
Run Code Online (Sandbox Code Playgroud)

脚本完成后,我留下了如此订购的工作表:

Data1, Chart1, Data2, Chart2, Data3, Chart3, ...
Run Code Online (Sandbox Code Playgroud)

是否可以在脚本末尾(即之前workbook.close())重新排序工作表,以在最终的.xlsx文件中获取以下工作表顺序?

Chart1, Chart2, Chart3,...,ChartN, Data1, Data2, Data3,...
Run Code Online (Sandbox Code Playgroud)

python excel xlsxwriter

10
推荐指数
3
解决办法
6617
查看次数

是否可以通过Scrapy中的CSS属性定位元素?

我想知道Scrapy是否有基于CSS中定义的颜色来刮取数据的方法.例如,选择所有元素background-color: #ff0000.

我试过这个:

response.css('td::attr(background-color)').extract()
Run Code Online (Sandbox Code Playgroud)

我期待一个列表,其中包含为表数据元素设置的所有背景颜色,但它返回一个空列表.

通常可以通过Scrapy中的CSS属性定位元素吗?

html css python scrapy

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

从Django视图开始Scrapy

我对Scrapy的体验是有限的,每次我使用它时,它总是通过终端的命令.如何从我的django模板中获取我的表单数据(要删除的URL)以与scrapy进行通信以开始进行刮擦?到目前为止,我只想到从django的视图中获取表单的返回数据,然后尝试进入scrapy目录中的spider.py,将表单数据的url添加到spider的start_urls中.从那里开始,我真的不知道如何触发实际的爬行,因为我习惯于通过我的终端使用"scrapy crawl dmoz"等命令严格执行此操作.谢谢.

微小的编辑:刚刚发现了scrapyd ...我想我可能正朝着正确的方向前进.

python django scrapy web-scraping

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

检查元素是否在硒中可点击

我能够验证一个元素是否存在以及它是否显示,但似乎无法找到一种方法来查看它是否是"可点击的"(不是在谈论禁用).

问题是,当填充webform时,我想要的元素在加载时可能会叠加div.div本身很难被发现,因为它的id,名称甚至css都很灵活.因此,我试图检测输入字段是否可以"点击"或"填充".当存在重叠div时,该字段不能由普通用户填充(因为div将覆盖输入字段而不允许用户填充它),但它可以由selenium填充.我想防止这种情况,只有当用户也可以填充它时才允许硒填充它.

html python selenium selenium-webdriver

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

nose.tools.eq_ vs assertEqual

问题:

我们一直在使用nose测试运行器.

我不时会看到我们的测试有eq_()电话:

eq_(actual, expected)
Run Code Online (Sandbox Code Playgroud)

而不是共同的:

self.assertEqual(actual, expected)
Run Code Online (Sandbox Code Playgroud)

问题:

nose.tools.eq_与标准的单元测试框架相比,使用是否有任何好处assertEqual()?它们实际上相当吗?


思考:

好吧,对于一个,eq_更短,但必须从中导入nose.tools,使得测试依赖于测试运行器库,这可能使得更难以切换到不同的测试运行器,比如说py.test.在另一方面,我们也用@istest,@nottest以及@attr鼻子装饰了很多.

python testing nose assertion python-unittest

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

在Protractor中传播承诺

q有这个简洁的功能来解析和传播多个promises到单独的参数:

如果你有一个数组的承诺,你可以使用spread作为替代.扩展函数将值"扩展"到履行处理程序的参数上.

return getUsername()
    .then(function (username) {
        return [username, getUser(username)];
    })
    .spread(function (username, user) {

    });
Run Code Online (Sandbox Code Playgroud)

在量角器中,我们正在尝试使用内置的protractor.promise来自WebDriverJS.

问题:

是否可以使用"传播"功能protractor.promise

用例示例:

我们已经实现了一个自定义的jasmine matcher来检查元素是否被聚焦.在这里,我们需要在进行相等比较之前解决两个promise.目前,我们正在使用protractor.promise.all()then():

protractor.promise.all([
    elm.getId(),
    browser.driver.switchTo().activeElement().getId()
]).then(function (values) {
    jasmine.matchersUtil.equals(values[0], values[1]);
});
Run Code Online (Sandbox Code Playgroud)

理想情况下,我们希望处于更易读的状态:

protractor.promise.all([
    elm.getId(),
    browser.driver.switchTo().activeElement().getId()
]).spread(function (currentElementID, activeElementID) {
    return jasmine.matchersUtil.equals(currentElementID, activeElementID);
})
Run Code Online (Sandbox Code Playgroud)

javascript promise angularjs selenium-webdriver protractor

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

使用ng-describe进行量角器的端到端测试

我最近发现了一个很棒的ng-describe软件包,它通过抽象掉你必须记住/查找和编写的所有样板代码来加载,注入,模拟或间谍,从而使AngularJS应用程序的单元测试非常透明.

有人试过ng-describeprotractor吗?它是否有意义,我们可以从中受益吗?


引起我注意的一件事是你可以轻松地模拟HTTP响应:

ngDescribe({
  inject: '$http', // for making test calls
  http: {
    get: {
      '/my/url': 42, // status 200, data 42
      '/my/other/url': [202, 42], // status 202, data 42,
      '/my/smart/url': function (method, url, data, headers) {
        return [500, 'something is wrong'];
      } // status 500, data "something is wrong"
    }, 
    post: {
      // same format as GET
    }
  },
  tests: function (deps) {
    it('responds', function (done) {
      deps.$http.get('/my/other/url')
        .then(function (response) {
          // response.status …
Run Code Online (Sandbox Code Playgroud)

javascript testing angularjs protractor ngdescribe

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

在端到端测试中使用跨平台键盘快捷键

问题:

在我们相当大的测试代码库中,我们使用不同的键盘快捷键.例如,复制我们正在使用的选定文本CTRL/COMMAND + C,粘贴CTRL/COMMAND + v,打开新选项卡CTRL/COMMAND + T等.

为了使测试在多个平台上运行,我们希望根据目标浏览器运行的平台自动进行CTRLvs COMMAND选择.为了确定目标平台,我们目前正在使用以下帮助函数navigator.appVersion:

this.getControlKey = function () {
    return browser.executeScript("return navigator.appVersion.indexOf('Mac');").then(function (isMac) {
        return isMac ? protractor.Key.COMMAND : protractor.Key.CONTROL;
    });
};
Run Code Online (Sandbox Code Playgroud)

这种方法的问题是getControlKey()返回一个承诺,每次我们使用它时,我们必须明确地解决承诺:

helpers.getControlKey().then(function (controlKey) {
    elm.sendKeys(protractor.Key.chord(controlKey, "c"));
});
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 是否有可能避免嵌套并简化使用getControlKey()?理想情况下,我希望它的工作简单:

    elm.sendKeys(protractor.Key.chord(helpers.getControlKey(), "c"));
    
    Run Code Online (Sandbox Code Playgroud)
  2. 是使用navigator.appVersion最好的方法来确定目标平台,还有更好的方法吗?

javascript selenium end-to-end selenium-webdriver protractor

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

multiCapabilities和jasmine重点测试

故事:

我们有一个相当庞大的端到端量角器测试代码库.我们有两个配置 - 一个是"本地" - 在Chrome和Firefox中运行测试,directConnect另一个是"远程" - 在远程selenium服务器上运行测试 - 在我们的案例中是BrowserStack.

我们的"本地"配置配置为在Chrome中运行一些测试,在Firefox中运行一些测试 - 因为我们实际上无法在Chrome中运行某些测试 - 例如,键盘快捷键在Chrome + Mac中不起作用.在解决链接chromedriver问题之前,运行需要在Firefox中使用键盘快捷键的测试是一种解决方法.

以下是配置的相关部分:

var firefox_only_specs = [
    "../specs/some_spec1.js",
    "../specs/some_spec2.js",
    "../specs/some_spec3.js"
];

exports.config = {
    directConnect: true,

    multiCapabilities: [
        {
            browserName: "chrome",
            chromeOptions: {
                args: ["incognito", "disable-extensions", "start-maximized"]
            },
            specs: [
                "../specs/**/*.spec.js",
                "../specs/**/**/*.spec.js",
                "../specs/**/**/**/*.spec.js"
            ],
            exclude: firefox_only_specs
        },
        {
            browserName: "firefox",
            specs: firefox_only_specs
        }
    ],

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

问题:

现在,问题是,如果我正在调试单个测试,或者想要运行单个测试 - 我标记它是专注的(通过fdescribe/ fit) - 但是量角器启动两个驱动程序会话 - 一个用于Chrome和另一个一个用于Firefox,使用两种配置功能: …

javascript testing selenium jasmine protractor

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

如何在unittest中使用assert_frame_equal

unittest包新手.我正在尝试通过以下代码验证函数返回的DataFrame.即使我将输入硬编码assert_frame_equal为等于(pd.DataFrame([0,0,0,0])),单位测试仍然失败.有人想解释它为什么会发生吗?

import unittest
from pandas.util.testing import assert_frame_equal
class TestSplitWeight(unittest.TestCase):
    def test_allZero(self):
        #splitWeight(pd.DataFrame([0,0,0,0]),10)
        self.assert_frame_equal(pd.DataFrame([0,0,0,0]),pd.DataFrame([0,0,0,0]))

suite = unittest.TestLoader().loadTestsFromTestCase(TestSplitWeight)
unittest.TextTestRunner(verbosity=2).run(suite)
Run Code Online (Sandbox Code Playgroud)
Error: AttributeError: 'TestSplitWeight' object has no attribute 'assert_frame_equal'

python unit-testing pandas python-unittest

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