Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Testing 使用量角器与颜色输入交互_Testing_Protractor_End To End - Fatal编程技术网

Testing 使用量角器与颜色输入交互

Testing 使用量角器与颜色输入交互,testing,protractor,end-to-end,Testing,Protractor,End To End,设置复选框或文本输入值很简单。但如何使用量角器设置颜色类型的输入值?我试着这样做: element(by.id("prop_border-color")).click(); browser.driver.actions() .sendKeys(protractor.Key.BACK_SPACE) .sendKeys(protractor.Key.BACK_SPACE) .sendKeys("00") .sendKeys(protractor.Key.ENTER)

设置复选框或文本输入值很简单。但如何使用量角器设置颜色类型的输入值?我试着这样做:

element(by.id("prop_border-color")).click();
browser.driver.actions()
    .sendKeys(protractor.Key.BACK_SPACE)
    .sendKeys(protractor.Key.BACK_SPACE)
    .sendKeys("00")
    .sendKeys(protractor.Key.ENTER)
    .perform();
但它触发了这个错误:

失败::未能从中读取“sessionStorage”属性 “窗口”:在“数据:”URL内禁用存储

是否可以以某种方式与颜色选择器窗口交互

UPD:

全面测试:

describe('Panel Editor app', function() {

    function addToplevel() {
        var elem = element(by.css(".widget-list-item-toplevel"));
        var target = element(by.id('droparea'));
        browser.driver.actions()
            .mouseDown(elem)
            .mouseMove(target)
            .mouseUp(target)
            .perform();
    }

    function addToToplevel(selector) {
        var elem = element(by.css(selector));
        var target = element(by.css('.toplevel'));
        browser.driver.actions()
            .mouseDown(elem)
            .mouseMove(target)
            .mouseUp(target)
            .perform();
    }

    beforeEach(function() {
        browser.get('http://localhost:8080/webapps/panel_editor/index.html');
    });

    afterEach(function() {
        browser.executeScript('window.sessionStorage.clear();');
        browser.executeScript('window.localStorage.clear();');
    });


    it('should check all widgets in toplevel', function() {
        addToplevel();

        addToToplevel(".widget-list-item-rows");
        browser.sleep(300);
        element(by.model("dialogCtrl.dialogs.widget.widget_model.props[q].value")).clear().sendKeys(4);
        element(by.id("widget_modal")).element(by.buttonText("OK")).click();
        browser.sleep(300);

        element.all(by.css(".builder-rows > div")).then(function(rows) {
            for (var i = 0, l = rows.length-1; i < l; i++) {
                rows[i].getCssValue("border-color").then(function(val) {
                    expect(val == "rgb(221, 221, 221)").toBe(true);
                })
            }
        });
        element(by.id("prop_border-color")).click();
        // Color picker shows.
        browser.driver.actions()
            .sendKeys(protractor.Key.BACK_SPACE)
            .sendKeys(protractor.Key.BACK_SPACE)
            .sendKeys("00")
            .sendKeys(protractor.Key.ENTER)
            .perform();
        // ERROR HERE

        element.all(by.css(".builder-rows > div")).then(function(rows) {
            for (var i = 0, l = rows.length-1; i < l; i++) {
                rows[i].getCssValue("border-color").then(function(val) {
                    expect(val == "rgb(221, 221, 0)").toBe(true);
                })
            }
        });
    });
});

但仍在寻找更好的解决方案

我怀疑退格不会发送到颜色输入,而是使浏览器返回到浏览器历史记录中,从而导致空白页和本地存储访问错误

相反,请明确地解析
单击
承诺,使用
清除()
清除输入字段并发送密钥:

var colorInput = element(by.id("prop_border-color"));
colorInput.click().then(function () {
    colorInput.clear();
    colorInput.sendKeys("#FF0000");
});

另一种尝试方法是在调用
actions()

时,将
browser.driver
替换为
browser
,可以显示完整的测试吗?这是一个正在测试的angular应用程序吗?谢谢。是的,有棱角。从测试中添加了更多代码。如果有帮助的话,我可以显示完整测试,但这部分肯定有错误。我使用executeScript方法暂时解决了这个问题。但仍在寻找更好的解决方案。只是尝试了这种方法。对于第一个元素,会发生此错误:失败:元素状态无效:元素必须是用户可编辑的才能清除它。browser.actions提供与browser.driver相同的结果。actions@Anton好的,你能展示一下颜色选择器的HTML表示吗?谢谢
var colorInput = element(by.id("prop_border-color"));
colorInput.click().then(function () {
    colorInput.clear();
    colorInput.sendKeys("#FF0000");
});