Tôi đang sử dụng Java, Selenium và Chrome để tự động kiểm tra. Các nhà phát triển của chúng tôi gần đây đã nâng cấp giao diện người dùng của chúng tôi từ AngularJS lên Angular2 (không chắc chắn liệu vấn đề đó có quan trọng) hay không. Nhưng kể từ đó, sendKeys nhập các ký tự không đầy đủ vào trường văn bản. Dưới đây là ví dụ:Selenium sendKeys không gửi tất cả các ký tự
public void enterCustomerDetails()
{
txtFirstName.sendKeys("Joh201605130947AM");
txtSurname.sendKeys("Doe201605130947AM");
txtEmail.sendKeys("[email protected]");
}
Tôi cũng đã thử sử dụng executeScript. Nó không hoạt động. Nó có thể nhập các ký tự hoàn chỉnh nhưng biểu mẫu cho rằng trường là null.
public void forceSendKeys(WebElement element, String text)
{
if (element != null)
((JavascriptExecutor) this.webDriver).executeScript("arguments[0].value=arguments[1]", element, text);
}
public void enterCustomerDetails()
{
forceSendKeys(txtFirstName, "Joh201605130947AM");
forceSendKeys(txtSurname, "Doe201605130947AM");
forceSendKeys(txtEmail, "[email protected]");
}
Tôi cũng đã thử sử dụng .click() trước .sendKeys và thêm thời gian ngủ. Họ cũng không làm việc.
Tôi có một ý tưởng để nhập các ký tự 1 bằng 1 từ bài đăng này: How to enter characters one by one in to a text field in selenium webdriver?
Nó làm việc nhưng điều đó có nghĩa là tôi phải viết lại tất cả các mã của tôi từ SendKeys để các chức năng mới:
public void sendChar(WebElement element, String value)
{
element.clear();
for (int i = 0; i < value.length(); i++){
char c = value.charAt(i);
String s = new StringBuilder().append(c).toString();
element.sendKeys(s);
}
}
public void enterCustomerDetails()
{
sendChar(txtFirstName, "Joh201605130947AM");
sendChar(txtSurname, "Doe201605130947AM");
sendChar(txtEmail, "[email protected]");
}
Nếu các bạn biết một cách tốt hơn, hãy giúp đỡ! :)
tốt. trông giống như vấn đề với Angular2 mà thôi. –