2015-12-04 100 views
0

我已经定义了一个测试用订单从商店的产品。在流程结束时,您将被重定向到付款提供商(贝宝或其他)以支付您的订单。 这里是问题:商店是基于角度而不是付款页面。测试正在运行,直到我到达付款页面。然后我接收:PhantomJS找不到元素

Failed: {"errorMessage":"Unable to find element with xpath '//*[@id=\"cardnumber\"]' 

的代码是这样的:

it('submit the order', function() { 
     CO4.order(); 
     browser.sleep(8000); 
    }); 

    it('enters the creditcard data', function() { 
     browser.driver.findElement(by.xpath('//*[@id="cardnumber"]')).sendKeys("123456789"); 
     browser.driver.findElement(by.xpath('//*[@id="expmonth"]')).sendKeys("12"); 
     browser.driver.findElement(by.xpath('//*[@id="expyear"]')).sendKeys("2050"); 
     browser.driver.findElement(by.xpath('//*[@id="cvm"]')).sendKeys("123"); 
     browser.driver.findElement(by.xpath('//*[@id="next"]')).click(); 
    }); 

的配置是:

var TIMEOUT = 40000; 
exports.config = { 
    seleniumServerJar: '../../selenium/selenium-server-standalone-2.48.2.jar', 
    baseUrl: 'https://myShop/main', 

    specs: [ 
     './UseCases/protractorSuiteCheckout.js', 
    ], 

    capabilities: { 
     'browserName': 'PhantomJS'.toLowerCase(), 
     'phantomjs.binary.path': require('phantomjs').path, 
     'phantomjs.cli.args': ['--ignore-ssl-errors=true', '--web-security=false'], 
     'phantomjs.ghostdriver.cli.args': ['--loglevel=DEBUG'] 
    }, 

    getPageTimeout: TIMEOUT, 
    allScriptsTimeout: TIMEOUT, 
    jasmineNodeOpts: { 
     defaultTimeoutInterval: TIMEOUT, 
     isVerbose: true, 
     includeStackTrace: true 
    }, 
    framework: "jasmine2", 
    onPrepare: function() { 
     browser.driver.manage().window().maximize(); 
     browser.driver.manage().deleteAllCookies(); 
     var jasmineReporters = require('jasmine-reporters'); 
     jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({ 
      consolidateAll: true, 
      filePrefix: 'xmloutput', 
      savePath: 'report' 
     })); 
} 

};

请帮忙!

回答

1

为什么使用复杂的xpath当你所做的只是一个findById?

更换

browser.driver.findElement(by.xpath('//*[@id="cardnumber"]')).sendKeys("123456789"); 
    browser.driver.findElement(by.xpath('//*[@id="expmonth"]')).sendKeys("12"); 
    browser.driver.findElement(by.xpath('//*[@id="expyear"]')).sendKeys("2050"); 
    browser.driver.findElement(by.xpath('//*[@id="cvm"]')).sendKeys("123"); 
    browser.driver.findElement(by.xpath('//*[@id="next"]')).click(); 

由:

 browser.driver.findElement(by.id('cardnumber')).sendKeys("123456789"); 
     browser.driver.findElement(by.id('expmonth')).sendKeys("12"); 
     browser.driver.findElement(by.id('expyear')).sendKeys("2050"); 
     browser.driver.findElement(by.id('cvm')).sendKeys("123"); 
     browser.driver.findElement(by.id('next')).click(); 

看看它是否更好?

+0

同样的效果......任何其他的想法? –

+0

我也有这个问题。这几乎就好像PhantomJS没有加载角度视图。 Firefox驱动程序可以正常测试。 – GrahamJ