小编ale*_*cxe的帖子

非常慢的正则表达式搜索

我不确定我是否完全理解以下正则表达式搜索的内容:

>>> import re
>>> template = re.compile("(\w+)+\.")
>>> target = "a" * 30
>>> template.search(target)
Run Code Online (Sandbox Code Playgroud)

search()呼叫需要几分钟才能完成,CPU使用率达到100%.对于2.7.5和3.3.3 Python版本,该行为都是可重现的.

有趣的事实是,如果字符串的长度小于20-25个字符,那么很快就会search()返回.

怎么了?

python regex string performance

11
推荐指数
2
解决办法
939
查看次数

使用自定义检查扩展jshint

在Python世界中,有多个静态代码分析工具,可以通过编写插件或扩展来轻松扩展自定义检查,例如:

在JavaScript世界中,据我所知,它jshint是静态代码分析的头号工具.我已经使用了一段时间,它肯定有助于找到许多代码样式违规,但是,最近,我遇到了需要扩展jshint自定义检查.我怎样才能做到这一点?它可以扩展吗?


我查看了文档,我发现的唯一一件事是如何编写一个不是我正在寻找的自定义记者.

作为一种变通方法,我想我可以派生jshint回购,实施检查,并在该项目保持从上游更新使用叉子.

javascript static-code-analysis jshint

11
推荐指数
2
解决办法
1224
查看次数

用量角器测试悬停状态的变化

无论我做什么,我都无法通过量角器测试获得悬停状态.以下代码是半功能的..

  • 在Firefox中运行良好
  • 仅当我使用Chrome滚动区域进入视图时才有效.
  • Phantom JS失败了

obj
  .getCssValue('color')
  .then(function (color1) {
    browser
      .actions()
      .mouseMove(obj)
      .perform()
      .then(function () {
        obj
          .getCssValue('color')
          .then(function (color2) {
            expect(color1)
              .not
              .toEqual(color2);
          });
      });
Run Code Online (Sandbox Code Playgroud)

javascript selenium end-to-end selenium-webdriver protractor

11
推荐指数
2
解决办法
3972
查看次数

向上滚动页面到selenium顶部

如何将网页滚动到页面顶部.

我知道滚动页面到底部是:

window.scrollTo(0,document.body.scrollHeight)
Run Code Online (Sandbox Code Playgroud)

就像那样可以将页面滚动到顶部

selenium selenium-webdriver

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

使用openpyxl插入列

我正在编写一个修改现有excel文档的脚本,我需要能够在两个其他列之间插入一个列,如VBA宏命令.EntireColumn.Insert.

是否有任何方法使用openpyxl来插入这样的列?
如果没有,有关写一个的建议吗?

python excel openpyxl

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

断言元素是重点

根据我如何断言元素是集中的?线程,您可以通过切换到a来检查元素是否被聚焦activeElement()并断言这与您期望获得焦点的元素相同:

expect(page.element.getAttribute('id')).toEqual(browser.driver.switchTo().activeElement().getAttribute('id'));
Run Code Online (Sandbox Code Playgroud)

在我的例子中,当前关注的元素没有id属性.

我应该怎么做而不是检查id

额外的问题:另外,正如你从我试图解决它看到的那样,看起来我不能指望/断言一个元素(或web元素)作为一个完整的对象.为什么?


我试过了:

expect(page.element).toEqual(browser.driver.switchTo().activeElement());
Run Code Online (Sandbox Code Playgroud)

但是失败的是我甚至无法理解的错误 - 有一个巨大的追溯(在控制台中滚动约10分钟),但内部没有用户友好的错误.

我也试过用getWebElement():

expect(page.element.getWebElement()).toEqual(browser.driver.switchTo().activeElement());
Run Code Online (Sandbox Code Playgroud)

但是这导致了以下错误:

错误:期望使用WebElement参数调用,期望是Promise.你的意思是使用.getText()吗?

使用最新的量角器开发版本.

javascript testing end-to-end angularjs protractor

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

使用Jasmine检查两个边界(在匹配器之间)

在Jasmine,有toBeGreaterThantoBeLessThan匹配.

如果我想检查特定范围内的整数值怎么办?toBeInBetween匹配器有什么吗?

目前,我可以通过两个单独的expect调用解决它:

var x = 3;

expect(x).toBeGreaterThan(1);
expect(x).toBeLessThan(10);
Run Code Online (Sandbox Code Playgroud)

javascript testing assertions jasmine jasmine-matchers

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

Appium findElement在一行中使用两次不起作用

我试图通过其完整路径(wholeElement)找到一个元素,并首先找到更高级别的元素,然后在该元素中找到更低级别的元素(modularElement).这是我的代码:

    WebElement modularElement = appDriver.findElement(By.xpath("//UIATableCell[2]")).findElement(By.xpath("//UIAStaticText[4]"));
    WebElement wholeElement = appDriver.findElement(By.xpath("//UIATableCell[2]/UIAStaticText[4]"));

    Logger.LogMessage("modularElement attribute1: " + modularElement.getLocation(), Priority.High);
    Logger.LogMessage("wholeElement attribute1: " + wholeElement.getLocation(), Priority.High);
Run Code Online (Sandbox Code Playgroud)

我遇到的真正奇怪的问题是两个元素(模块化和整体)是不同的元素而不是相同的元素(由上面代码中打印的不同位置显示).任何人都可以解释为什么会这样吗?

谢谢.

更新:

我也尝试使用.//但是仍然提供相同的问题:

    WebElement modularElement = appDriver.findElement(By.xpath("//UIATableCell[2]")).findElement(By.xpath(".//UIAStaticText[4]"));
Run Code Online (Sandbox Code Playgroud)

java selenium xpath selenium-webdriver appium

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

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

问题:

在我们相当大的测试代码库中,我们使用不同的键盘快捷键.例如,复制我们正在使用的选定文本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
查看次数

什么是Protractor/WebDriverJS中的by.js定位器?

最近,我注意到了一个新的定位器被添加到Protractor文档中 - by.js():

通过计算JavaScript表达式来定位元素,该表达式可以是函数或字符串.

我理解这个定位器提供了什么,但是当这个定位器很有时,我错过了真实的用例.我应该何时使用by.js而不是使用其他内置定位器by.css

javascript testing selenium selenium-webdriver protractor

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