попробуйте один раз с ключами до опции входа.
driver.findElement(By.className('js-username-field')).sendKeys('my email',Keys.TAB,'my pwd',Keys.TAB,Keys.ENTER);
Я хочу войти в 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();
Когда я проверяю свой код, иногда что-то не так:
После завершения моего кода поле пароля остается пустым. Это приводит к ошибке входа в систему.
javascript,node.js,selenium,promise,
Не могли бы вы попробовать код ниже и сказать, работает ли он или нет? Если нет, что вы видите на консоли?
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();
});
Проблема заключается в том, что не давали времени ожидания до и после
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');
Надеюсь, это поможет
'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();'