10

日付フィールドはカレンダーのようなもので、Selenium WebDriver の sendKeys を使用して日付を入力することはできません。

ただし、日付フィールドの「タイプ」は、以前は Selenium RC で正常に機能していました。

「sendKeys()」の前に「clear()」を使用しようとしましたが、これによりエラーが発生しました。

Caught Exception: Element is read-only and so may not be used for actions
Command duration or timeout: 10.11 seconds

sendKeys() は、他のテキスト入力フィールドに対して正常に機能しています。

要素をチェックするために isDisplayed() を試してみましたが、それは本当です。ブラウザーでも、テストを実行すると、カーソルは日付フィールドに移動しますが、テキストを入力しません。

4

5 に答える 5

8

これには次のコードを使用してください...

((JavascriptExecutor)driver).executeScript ("document.getElementById('dateofbirth').removeAttribute('readonly',0);");

WebElement BirthDate= driver.findElement(By.id("dateofbirth"));
BirthDate.clear();
BirthDate.sendKeys("20-Aug-1985"); //Enter this date details with valid date format
于 2013-12-13T11:12:49.327 に答える
3

私も同じ問題に直面しました。これが私が見つけた解決策です。これは私にとってはうまくいきました。入力フィールドの読み取り専用属性を削除してから、他の入力フィールドと同じように実行します。

   ((JavascriptExecutor) driver).executeScript("document.getElementsByName('date'[0].removeAttribute('readonly');");
    WebElement dateFld = driver.findElement(By.id("date_completed"));
    dateFld.clear();
    dateFld.sendKeys("date Completed");
于 2013-01-31T09:45:47.573 に答える
1

jQuery 日付ピッカー オブジェクトを使用している場合、フィールドは読み取り専用で、日付はカレンダー オブジェクトから選択する必要があります。その場合、Selenium Web Driver の 'Select' クラス メソッドを使用して日付を選択できます。

Select date = new Select(driver.findElement(By.linkText("the date want to select")));
date.click();
于 2012-10-20T07:05:12.520 に答える
0

私はこれを行い、うまく機能します。フォーマットに注意してください。これにより、コントロールから値を取得することもできます。

var dob = element(by.id('dateOfBirth'))
dob.sendKeys('20-08-1985');

expect(element(by.id('dateOfBirth')).getAttribute('value')).toBe('2015-20-08');

それが役に立てば幸い。

于 2015-03-05T09:36:18.163 に答える