JavaScript: Selenium нажимает кнопку входа в систему, прежде чем я буду вводить пароль изредка

Я хочу войти в twitter, используя selenium webdriver, это мой код:

var webdriver = require('selenium-webdriver'),
    By = webdriver.By,
    until = webdriver.until;

var driver = new webdriver.Builder().
    forBrowser('chrome').
    build();

driver.get('https://twitter.com/login')
driver.findElement(By.className('js-username-field')).sendKeys('my email')
driver.findElement(By.className('js-password-field')).sendKeys('my pwd');
driver.findElement(By.css('button[type="submit"]')).click();

Когда я проверяю свой код, иногда что-то не так:

  1. Входной адрес электронной почты Selenium;
  2. Кнопка входа в систему Selenium;

После завершения моего кода поле пароля остается пустым. Это приводит к ошибке входа в систему.

введите описание изображения здесь

javascript,node.js,selenium,promise,

1

Ответов: 5


0

попробуйте один раз с ключами до опции входа.

driver.findElement(By.className('js-username-field')).sendKeys('my email',Keys.TAB,'my pwd',Keys.TAB,Keys.ENTER);

0

Не могли бы вы попробовать код ниже и сказать, работает ли он или нет? Если нет, что вы видите на консоли?

driver.get('https://twitter.com/login').then(function(){
    driver.findElement(By.className('js-username-field')).sendKeys('my email');
    driver.findElement(By.className('js-password-field')).sendKeys('my pwd');   

    driver.wait(function(){
        return driver.findElement(By.className('js-password-field')).getAttribute('value');
}, 10000).then(function(value){ console.log(value)});

    driver.findElement(By.css('button[type="submit"]')).click();
});

0

Проблема заключается в том, что не давали времени ожидания до и после

driver.findElement (By.className ('js-password-field')). sendKeys ('my pwd');

Попробуйте дать время ожидания.

public void myFunction () throws InterruptedException

{       
driver.get('https://twitter.com/login');  
driver.findElement(By.className('js-username-field')).sendKeys('my email');  
Thread.sleep(4000);   
driver.findElement(By.className('js-password-field')).sendKeys('my pwd');   
Thread.sleep(4000);  
driver.findElement(By.css('button[type="submit"]')).click();   
}

Также вы можете попробовать подождать неявный или явный способ.

 WebDriverWait wait = new WebDriverWait(driver, 20);        wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.className('js-password-field'))));
        driver.findElement(By.className('js-password-field')).sendKeys('my pwd'); 

Надеюсь, это поможет


0
'var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until;

var driver = new webdriver.Builder().
forBrowser('chrome').
build();

driver.get('https://twitter.com/login')
driver.findElement(By.className('js-username-field')).sendKeys('my email')
driver.findElement(By.className('js-password-field')).sendKeys('my pwd');
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElement(By.css('button[type="submit"]')).click();'

0

Попробуйте добавить ожидание перед кликом, как:

driver.wait(until.elementLocated(By.css("button[type='submit']")));

Это должно решить проблему.

JavaScript, Node.js, селен, обещание,
Похожие вопросы