我不确定我是否完全理解以下正则表达式搜索的内容:
>>> 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()返回.
怎么了?
无论我做什么,我都无法通过量角器测试获得悬停状态.以下代码是半功能的..
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
如何将网页滚动到页面顶部.
我知道滚动页面到底部是:
window.scrollTo(0,document.body.scrollHeight)
Run Code Online (Sandbox Code Playgroud)
就像那样可以将页面滚动到顶部
我正在编写一个修改现有excel文档的脚本,我需要能够在两个其他列之间插入一个列,如VBA宏命令.EntireColumn.Insert.
是否有任何方法使用openpyxl来插入这样的列?
如果没有,有关写一个的建议吗?
根据我如何断言元素是集中的?线程,您可以通过切换到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()吗?
使用最新的量角器开发版本.
在Jasmine,有toBeGreaterThan和toBeLessThan匹配.
如果我想检查特定范围内的整数值怎么办?toBeInBetween匹配器有什么吗?
目前,我可以通过两个单独的expect调用解决它:
var x = 3;
expect(x).toBeGreaterThan(1);
expect(x).toBeLessThan(10);
Run Code Online (Sandbox Code Playgroud) 我试图通过其完整路径(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) 问题:
在我们相当大的测试代码库中,我们使用不同的键盘快捷键.例如,复制我们正在使用的选定文本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)
问题:
是否有可能避免嵌套并简化使用getControlKey()?理想情况下,我希望它的工作简单:
elm.sendKeys(protractor.Key.chord(helpers.getControlKey(), "c"));
Run Code Online (Sandbox Code Playgroud)是使用navigator.appVersion最好的方法来确定目标平台,还有更好的方法吗?
javascript selenium end-to-end selenium-webdriver protractor
最近,我注意到了一个新的定位器被添加到Protractor文档中 - by.js():
通过计算JavaScript表达式来定位元素,该表达式可以是函数或字符串.
我理解这个定位器提供了什么,但是当这个定位器很有用时,我错过了真实的用例.我应该何时使用by.js而不是使用其他内置定位器by.css?
javascript ×6
selenium ×5
protractor ×4
end-to-end ×3
testing ×3
python ×2
angularjs ×1
appium ×1
assertions ×1
excel ×1
jasmine ×1
java ×1
jshint ×1
openpyxl ×1
performance ×1
regex ×1
string ×1
xpath ×1