如何根据特定参数在selenium webdriver的文本框中插入值

时间:2015-05-19 09:34:25

标签: java html selenium webdriver

这是我的java代码。

package com.ej.zob.modules;

import java.awt.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Select;

public class SetExchange {
public void Execute(String CountryName, String value)
{
    LaunchApplication.driver.findElement(By.linkText("SET")).click();
    LaunchApplication.driver.findElement(By.linkText("EXCHANGE RATE")).click();
    //LaunchApplication.driver.findElement(By.xpath("//div[.=\""+CountryName+"\"]/following-sibling::*")).findElement(By.xpath("//input[@maxlength='4']")).sendKeys(value);
    LaunchApplication.driver.findElement(By.xpath("//input[@id=new_Afghanistan_AFN]")).sendKeys(value);
    LaunchApplication.driver.findElement(By.name("save")).click();

这是我的HTML代码

<input id="Afghanistan_AFN" type="text" value="30" disabled="disabled">
</div>
<div style="display: table-cell;width:270px" name="cell">
<input id="new_Afghanistan_AFN" type="text" maxlength="4">
<input type="button" value="SET" onclick="setExchangeRate('Afghanistan','AFN')" name="save">
<div id="msg_Afghanistan_AFN"></div>
</div>
</div>
</div>
<br>
<input id="Albania_ALL" type="text" value="12" disabled="disabled">
</div>
<div style="display: table-cell;width:270px" name="cell">
<input id="new_Albania_ALL" type="text" maxlength="4">
<input type="button" value="SET" onclick="setExchangeRate('Albania','ALL')" name="save">
<div id="msg_Albania_ALL"></div>
</div>                  

我想在上面的文本框中插入值但是如果我选择了findElement(By.id),那么它将只选择特定的文本框来插入值。但是我想根据国家名称插入值。我们假设如果用户通过阿富汗,那么只应选择具有id阿富汗的文本框。 如果我选择阿尔巴尼亚,那么只应选择具有id阿尔巴尼亚的文本框。我已经在html代码中提到了文本框。

1 个答案:

答案 0 :(得分:0)

只需像这样替换硬编码值

String countryName="CheckWhatUserHasSent";  --> User Selected Value
By.xpath(String.format("//input[@id=%s]",countryName));
                                    /\
                                    ||
                                    ||
      This will be replaced by whatever country Name User has passed .

<强>更新

您收到错误,因为ID为阿尔巴尼亚的输入框不存在。

您可以维护Map<Key,Value> keycountry namevalue为html格式的实际ID。

Map<String,String> map=HashMap<>();
map.put("Albania","actualIDInHTMLFORM");

获取国家/地区名称后,请尝试

countryName=map.get("Albania"); --> Now countryName correspond to your actual ID