0

背景:

  • 卡片纸 - 这包含程序的详细信息、股票的位置和股票的国家
  • 客户销售卡屏幕 - 当您向客户销售新卡时,您必须输入他们的地址。输入他们的国家/地区后,特定字段(州/地址第 2 行/邮政编码)要么成为强制性的,要么成为自愿的。

问题是正在使用的两个国家数据库不相同并且可能不同。卡片库存中显示“德国”,出售卡片屏幕上显示“德国,联邦共和国”

我的流量:

1)搜索预发行卡以从卡片库存中获取国家 - 将此变量分配给字符串,即aString

2) 卖掉那张卡

3) 在国家/地区下拉框中 - 如果aString在该列表中,请选择aString,如果不是,则创建一个“else thens”列表以捕获变化

我的代码一直告诉我该字符串不在列表中,即使我在两个国家匹配的情况下测试它也会countrydropdown打印出来false

任何帮助将不胜感激

Boolean countrydropdown = "xpath=//select[@id='address.country']/option]".indexOf(aString) > 0;
System.out.println("countrydropdown");
System.out.println(countrydropdown);


<tr>
    <td class="labelFormReq">*</td>
    <td class="labelForm">Country:</td>
    <td>
        <select id="address.country" onchange="validateAndSubmit(this, 'selectCountryEvent');" name="address.country">
            <option value="">Please Select</option>
            <option value="4">Afghanistan</option>
            <option value="248">Alan Islands </option>
            <option value="8">Albania</option>
            <option value="12">Algeria</option>
            <option value="16">American Samoa</option>
            <option value="20">Andorra</option>
            <option value="24">Angola</option>
            <option value="660">Anguilla</option>
            <option value="10">Antarctica</option>
            <option value="28">Antigua and Barbuda</option>
            <option value="32">Argentina</option>
            <option value="51">Armenia</option>
            <option value="533">Aruba</option>
            <option value="36">Australia</option>
        </select>
    </td>
</tr>
4

1 回答 1

0
Boolean countrydropdown = "xpath=//select[@id='address.country']/option]".indexOf(aString) > 0;

并不真正搜索元素。实际上,它aString在文本中查找"xpath=//select[@id='address.country']/option]"。为了让它返回任何有用的东西,你必须用一个方法调用来包装它。看到这个:

Boolean countrydropdown = selenium.isElementPresent("xpath=//select[@id='address.country']/option[text()='" + aString + "']");

使阅读更具可读性和约定性:

boolean countryDropdown = selenium.isElementPresent("xpath=id('address.country')/option[text()='" + aString + "']");

true且仅当元素的<option>adress.country元素存在且文本等于您的aString.

或者,如果你想要更少的单线:

boolean countryDropdown = false;

String[] countryOptions = selenium.getSelectOptions("id=address.country");
for (String option : countryOptions) {
    if (option.equals(aString)) {
        countryDropdown = true;
        break;
    }
}
于 2012-07-21T08:27:34.013 回答