2016-02-26 4 views
1

Мы делаем несколько тестов для подключения к salesforce.com с помощью Phantomjs 2.0. Это работало очень хорошо, но за последние пару недель salesforce.com продолжал просить код проверки для каждой новой сессии.Войти в salesforce.com с Phantomjs 2.0 продолжать просить код подтверждения

Есть ли у кого-то подобная проблема?

+1

Вы проверили, что они допускают такую ​​вещь? Кроме того, * «Кто-нибудь сталкивается с такой же проблемой?» * Не является особенно полезным вопросом. В чем ваш вопрос * программирование? –

+0

У нас возникли проблемы с запуском селеновых скриптов с Salesforce.com с использованием Phantomjs 2.0. Каждый раз, когда мы запускаем скрипт на локальном, мы получаем экран проверки. –

ответ

1

Вы можете изменить свой IP-адрес, чтобы остановить Salesforce для запроса кода подтверждения. Перейти к Настройка -> Безопасность -> Доступ к сети и добавьте свой IP-адрес в белый список.

enter image description here

+0

К сожалению, это не вариант для нас из-за политики безопасности. –

1

Это должен возможно быть комментарий, но у меня нет необходимых очков, чтобы комментировать, пожалуйста, простите меня «ответ». Это рабочий ответ, так как я не очень разбираюсь в casper/phantom. Я буду обновлять полученные решения. Надеюсь, мои попытки помогут кому-то другому.

Неужели кто-то испытывает ту же проблему?

A: Да

Проблема: На Salesforce Spring '16 update при входе в SF из нового браузера SF проверяет подлинность пользователя с кодом проверки (можно проверить с помощью нового браузера eg.firefox) , Как ни странно, проблема не реплицируется сеансом инкогнито.

Предлагаемое решение: Создайте файл cookie & Войдите в систему SF с помощью сценариев casper/phantom. Сохранение аутентификации в файле cookie JS, в противном случае для каждого входа требуется проверка.

шаги тестирования:

  1. Мы можем видеть форму проверки с помощью Casper/фантом.

    var fs = require('fs'); //top of script 
    var html = this.getHTML(); //place this in wait_function() after login() 
    fs.write('./output.html', html, 'w'); 
    
  2. Теперь мы можем «заполнить» форму проверки с кодом по электронной почте

    this.click('phSearchInput', function() { //'phSearchInput' found in above extract 
    this.fill('form', { 
    'phSearchInput' : '*verification_number_here*' 
    }, true); 
    

    2.1 Там, кажется, проблема с окончательным редирект после проверки. Я не уверен, сколько времени я могу дать (поскольку это не приоритет), и я совершенно новичок в JS. Я оставлю здесь код для справки/тестирование

    /*Altered from http://blog.deadlypenguin.com/blog/2013/07/09/logging-into-salesforce-with-casperjs/ */ 
    
    var LOGIN_URL, LOGIN_USERNAME, LOGIN_PASSWORD, casp; 
    
    casp = require('casper').create({ 
        viewportSize: { 
          width: 1024, 
          height: 768 
        }, 
        verbose: true, 
        logLevel: 'debug' 
    }); 
    
    casp.userAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4'); 
    
    if (!casp.cli.has('username') && !casp.cli.has('password')) { 
        casp.echo('Usage: $ casperjs sfdclogin.casper.js --username=USERNAME --password=PASSWORD [--prod]').exit(-1); 
    } 
    
    if (casp.cli.has('prod')) { 
        LOGIN_URL = 'https://test.salesforce.com//'; 
    } else { 
        LOGIN_URL = 'https://test.salesforce.com/'; 
    } 
    
    LOGIN_USERNAME = casp.cli.get('username'); 
    LOGIN_PASSWORD = casp.cli.get('password'); 
    
    casp.start(LOGIN_URL, function() { 
    
        this.log('Logging in', 'debug'); 
        //login 
        this.fill('form', { 
          'username': LOGIN_USERNAME, 
          'pw': LOGIN_PASSWORD 
        }, true); 
    
        this.log('Logged in', 'debug'); 
    }); 
    
    casp.wait(5000, function() { 
    
        this.log('Varification START', 'debug'); 
        this.fill('form', { 
          'emc': '*verification_number_here*' 
        }, true); 
    
        this.captureSelector('test.png', 'html'); 
        this.log('Varification FINISHED', 'debug'); 
        this.wait(6000) 
    
    }, 12000); 
    
    casp.then(function() { 
    //casp.waitForUrl('https://cs31.salesforce.com/home/home.jsp', function() { 
    
        this.log('Are we logged in??'); 
        this.captureSelector('test2.png', 'html'); 
    
    }, 12000); 
    
    casp.run(); 
    
  3. Добавить файл куков в надежде проверка проверки сохраненная там. (Я получу, когда я получу шаг 3).