2015-12-04 155 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