gpt4 book ai didi

java - 我无法输入逻辑代码来在动态文本字段中输入引脚号。使用 Selenium Webdriver Java

转载 作者:行者123 更新时间:2023-11-30 01:59:37 25 4
gpt4 key购买 nike

尝试在动态文本字段中输入 PIN 码。每次加载网站时,PIN 码文本字段都会发生变化。需要帮助编写在 3 个文本字段中输入引脚号的逻辑。有 4 个 PIN 码,但我可以选择在 3 个文本字段中输入 PIN 码。

enclosed image of screenshot and code

Screenshot and code reference

最佳答案

根据您发布的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com