Мне нужна помощь с Selenium WebDriver. Я пытался автоматизировать сайт, но застрял в области PIN-пэдов.
Когда я нажал на элемент ввода PIN-кода, элемент находится только в режиме чтения и может принимать значение только щелчком мыши по пин-коду. Обратите внимание, что позиция чисел на ПИН-панели изменяется всякий раз, когда она всплывает/обновляется.
EDIT (дополнительная информация):
Он доступен публично www.mypaga.com. Вы можете использовать этот идентификатор для выполнения некоторых транзакций, таких как AcceptDeposit. имя пользователя: ibile, вопрос безопасности: 4, пароль: ibile4live
Вот код:
package com.paga.testing.agent.online;
import java.util.concurrent.TimeUnit;
import org.junit.AfterClass;
import org.junit.Assume;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class AcceptDepositTest extends LoginTest {
@BeforeClass
public static void beginTest() {
System.out.println("********* Begin *************");
Assume.assumeTrue(loginTest());
}
@Test
public void acceptDepositTest(){
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.elementToBeClickable(By.className("acceptDeposit")));
System.out.println("acceptDepositTest Running");
driver.findElement(By.className("acceptDeposit")).click();
driver.findElement(By.id("amount")).click();
driver.findElement(By.id("amount")).clear();
driver.findElement(By.id("amount")).sendKeys("1000");
driver.findElement(By.id("customerPhoneNumber")).clear();
driver.findElement(By.id("customerPhoneNumber")).sendKeys("08022614279");
driver.findElement(By.className("button_go")).click();
System.out.println("pin pad");
// Enter PIN
wait.until(ExpectedConditions.elementToBeClickable(By.id("confirmPin")));
driver.findElement(By.id("confirmPin")).click();
System.out.println("pin pad22");
driver.findElement(By.id("confirmPin")).sendKeys("1234");
driver.findElement(By.className("button_go")).click();
//driver.findElement(By.id("confirmPin")).sendKeys("1234");
//return flag;
}
@AfterClass
public static void ending(){
System.out.println("********* End *************");
}
}
И это код PIN PAD. Обратите внимание, что позиция значения PIN-кода изменяется при каждом обновлении
<div id="keypad-div" style="text-align: left; float: left; position: absolute; top: 431.067px; width: auto; left: 915.817px; display: block;">
<div class="keypad-row">
<button class="keypad-key" title="" type="button">9</button>
<button class="keypad-key" title="" type="button">7</button>
<button class="keypad-key" title="" type="button">2</button>
<button class="keypad-key keypad-close" title="Close the keypad" type="button">Ok</button>
</div>
<div class="keypad-row">
<button class="keypad-key" title="" type="button">4</button>
<button class="keypad-key" title="" type="button">3</button>
<button class="keypad-key" title="" type="button">6</button>
<button class="keypad-key keypad-back" title="Erase the previous character" type="button">Delete</button>
</div>
<div class="keypad-row">
<button class="keypad-key" title="" type="button">5</button>
<button class="keypad-key" title="" type="button">1</button>
<button class="keypad-key" title="" type="button">8</button>
</div>
<div class="keypad-row">
<div class="keypad-space"/>
<button class="keypad-key" title="" type="button">0</button>
</div>
Для этой конкретной ПИН-панели вы можете отправить PIN-код, так как вы уже знаете идентификатор элемента? Как и в следующем примере:
/* Отправить PIN-код */
driver.findElement(By.id("pin_id")).click();
driver.findElement(By.id("pin_id")).clear();
driver.findElement(By.id("pin_id")).sendKeys(pinID);