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

Posted

技术标签:

【中文标题】如何根据特定参数在 selenium webdriver 的文本框中插入值【英文标题】:how to insert value in text box in selenium webdriver according to perticular parameter 【发布时间】:2015-05-19 09:34:24 【问题描述】:

这是我的 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) 那么它只会选择特定的文本框来插入值。但是我想根据国家名称插入值.let我们假设如果用户通过 afghanistan 则只应选择具有 id afghanistan 的文本框。 如果我选择 Albania,则只应选择具有 id albania 的文本框。我已经在html代码中提到了文本框。

【问题讨论】:

你到底在哪里遇到问题?? 问题是如果我给 findelement(By.xpath"//input[@id=new_Afghanistan_AFN]") 那么它只选择阿富汗。所以我想给一个国家名称说阿尔巴尼亚,那么应该只选择阿尔巴尼亚文本框。希望你能理解。 仍然看不到问题?只找阿尔巴尼亚的元素? 【参考方案1】:

只需像这样替换硬编码值

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 为 Albania 的输入框不存在。

您可以维护Map&lt;Key,Value&gt;,其中keycountry namevaluehtml 形式的实际ID。

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

现在在获得国家名称后尝试

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

【讨论】:

我收到错误“无法找到元素:“method”:“xpath”,“selector”:“//input[@id=Albania]”

以上是关于如何根据特定参数在 selenium webdriver 的文本框中插入值的主要内容,如果未能解决你的问题,请参考以下文章

python3+selenium3遇到的问题:Exception ignored in: <bound method Service.__del__ of <selenium.webdri

Selenium + Chrome带配置项启动

Selenium + Chrome带配置项启动

Selenium + Chrome带配置项启动

selenium webdriver窗口切换

selenium学习