首页 > 解决方案 > 需要帮助在代码中设置 protractor.browser

问题描述

实际上,需要设置量角器的实例,因此,写,

var ptor = protractor.getInstance();

var driver = ptor.driver;
// Switching to frame

ptor.switchTo().frame(driver.findElement(protractor.By.id('NavBarGloablQuickCreate')));

对于上面的代码,它被指示设置:

量角器:失败:protractor.getInstance 不是函数

var browser = require("protractor").protractor.browser;
var driver = browser.driver;

But while setting it in the beginning :
for example :

it("Creating Customer",function() 
{

var browser = require("protractor").protractor.browser;

browser.ignoreSynchronization = true;

错误在那里,说:

找不到模块“量角器”

请。帮助

标签: protractor

解决方案


我错过了.getWebElement()原始答案中的内容,但是由于您在评论中说您愿意设置SELENIUM_PROMISE_MANAGER: false,您可以尝试这种方法吗?请注意,使用此设置,您的所有代码都需要更改为 async/await 样式,否则可能无法按您期望的顺序运行。

conf.js

exports.config = { 
    framework: 'jasmine', 
    seleniumAddress: 'localhost:4444/wd/hub', 
    capabilities: { 
        browserName: 'chrome' 
    }, 
    specs: ['spec.js'], 
    SELENIUM_PROMISE_MANAGER: false,
    jasmineNodeOpts: { 
        isVerbose: true, 
        includeStackTrace: true, 
        showColors: true, 
        defaultTimeoutInterval: 3000000 
    } 
}; 

Spec.js

it('switch to browser', async () => {
    await browser.waitForAngularEnabled(false);

    await browser.switchTo().frame(element(by.id('NavBarGloablQuickCreate')).getWebElement());
    let firstNField = element(by.id("firstname_i"));
    console.log(await firstNField.isPresent());
    await firstNField.sendKeys('firstN');
    console.log(firstNField.getAttribute('value'))
});

旧答案:非异步/等待你能试试这个,让我知道它是怎么回事吗?

browser.waitForAngularEnabled(false);
browser.switchTo().frame(element(by.id("NavBarGloablQuickCreate")).getWebElement());
browser.driver.sleep(1000);
element(by.id('firstname_i')).sendKeys('Indra');
browser.driver.sleep(1000);

推荐阅读