作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
尝试在动态文本字段中输入 PIN 码。每次加载网站时,PIN 码文本字段都会发生变化。需要帮助编写在 3 个文本字段中输入引脚号的逻辑。有 4 个 PIN 码,但我可以选择在 3 个文本字段中输入 PIN 码。
最佳答案
根据您发布的 HTML。如果字段类型相同,可以尝试使用索引。
使用下面的代码:
driver.findElement(By.cssSelector("div[class='field-set'] input.input-pin:nth-child(1)")).sendKeys("your value"); // for first text box
driver.findElement(By.cssSelector("div[class='field-set'] input.input-pin:nth-child(2)")).sendKeys("your value"); // for Second text box
driver.findElement(By.cssSelector("div[class='field-set'] input.input-pin:nth-child(3)")).sendKeys("your value"); // for third text box
请根据页面 UI 中的文本框更改 div[class='field-set'] input.input-pin:nth-child(index)
中的 index
位置。
更新
如果您不确定哪个文本框必须接受值,请使用以下逻辑
public static void main(String[] args) {
// first you need to store your testdata in a collection
Map<String,String> pinCodes = new HashMap<String, String>();
pinCodes.put("pin1", "2");
pinCodes.put("pin2", "3");
pinCodes.put("pin3", "3");
pinCodes.put("pin4", "4");
// you can remove the values as per you need suppose you only want `pin1` `pin2` then remove `pinCodes.put("pin3", "3");` and `pinCodes.put("pin4", "4");` from above code
enterPinCode(pincodes); //call method to enter the values in corresponding text-boxes
}
public void enterPinCode(Map<String,String> pinCodes) {
for (Entry<String, String> entry : pinCodes.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
switch (key) {
case "pin1" :
driver.findElement(By.cssSelector("div[class='field-set'] input.input-pin:nth-child(1)")).sendKeys(value);
break;
case "pin2" :
driver.findElement(By.cssSelector("div[class='field-set'] input.input-pin:nth-child(2)")).sendKeys(value);
break;
case "pin3" :
driver.findElement(By.cssSelector("div[class='field-set'] input.input-pin:nth-child(3)")).sendKeys(value);
break;
case "pin4" :
driver.findElement(By.cssSelector("div[class='field-set'] input.input-pin:nth-child(4)")).sendKeys(value);
break;
default :
System.out.println("pincode textbox key not found");
break;
}
}
}
或者,如果复选框在网页上是动态的,则替换 switch
语句中的以下代码:
switch (key) {
case "pin1" :
List<WebElement> box1 = driver.findElements(By.cssSelector("div[class='field-set'] input[placeholder='1st']"));
if(!box1.isEmpty()) {
box1.get(0).sendKeys(value);
}
break;
case "pin2" :
List<WebElement> box2 = driver.findElements(By.cssSelector("div[class='field-set'] input[placeholder='2nd']"));
if(!box2.isEmpty()) {
box2.get(0).sendKeys(value);
}
break;
case "pin3" :
List<WebElement> box3 = driver.findElements(By.cssSelector("div[class='field-set'] input[placeholder='3rd']"));
if(!box3.isEmpty()) {
box3.get(0).sendKeys(value);
}
break;
case "pin4" :
List<WebElement> box4 = driver.findElements(By.cssSelector("div[class='field-set'] input[placeholder='4th']"));
if(!box4.isEmpty()) {
box4.get(0).sendKeys(value);
}
break;
default :
System.out.println("pincode textbox key not found");
break;
}
此代码将在相应的 PIN 码文本框中发送 PIN 码(如果网页上有)。
关于java - 我无法输入逻辑代码来在动态文本字段中输入引脚号。使用 Selenium Webdriver Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53317611/
我是一名优秀的程序员,十分优秀!