0
<h5 _ngcontent-c2="" class="card-title">Payment Mode </h5>
<!---->
<div _ngcontent-c2="">
    <div _ngcontent-c2="" class="form-group">
        <input _ngcontent-c2="" name="paymentmode" type="radio" style=""> &nbsp;&nbsp;
        <b _ngcontent-c2="">Credit Card</b>
    </div>
</div>
<div _ngcontent-c2="">
    <div _ngcontent-c2="" class="form-group">
        <input _ngcontent-c2="" name="paymentmode" type="radio"> &nbsp;&nbsp;
        <b _ngcontent-c2="">Debit Card</b>
    </div>
</div>
<div _ngcontent-c2="">
    <div _ngcontent-c2="" class="form-group">
        <input _ngcontent-c2="" name="paymentmode" type="radio"> &nbsp;&nbsp;
        <b _ngcontent-c2="">Net Banking</b>
    </div>
</div>
<div _ngcontent-c2="">
    <div _ngcontent-c2="" class="form-group">
        <input _ngcontent-c2="" name="paymentmode" type="radio"> &nbsp;&nbsp;
        <b _ngcontent-c2="">UPI</b>
    </div>
</div>

对于上面的 HTML,我正在尝试根据单选按钮的值选择单选按钮。我正在使用 Protractor NuGet 包和 selenium webdriver。

IList<NgWebElement> oCheckBox = ngDriver.FindElements(By.XPath("//input[@name='paymentmode']"));
int Size = oCheckBox.Count;
for (int i = 0; i < Size; i++)
{
    String Value = oCheckBox.ElementAt(i).GetAttribute("value");
    if (Value.Equals("Net Banking"))
    {
        oCheckBox.ElementAt(i).Click();
        break;
    }
}

IList<NgWebElement>不包含ElementAt.

有什么方法可以根据付款方式选择单选按钮吗?

4

4 回答 4

2

使用 xpath ://input[@name='paymentmode']/following::b[1]

希望下面的代码会有所帮助:

IList<NgWebElement> oCheckBox = ngDriver.FindElements(By.XPath("//input[@name='paymentmode']/following::b[1]"));
        int Size = oCheckBox.Count;
        for (int i = 0; i < Size; i++)
        {
            String Value = oCheckBox.ElementAt(i).getText();
            if (Value.Equals("Net Banking"))
            {
                oCheckBox.ElementAt(i).Click();
                break;
            }
        }
于 2019-03-14T11:49:12.997 回答
1

您可以使用 XPath 通过包含的文本“Net Banking”来查找单选按钮

//input[@name='paymentmode']/following::b[.='Net Banking'][1]

我会将它放在一个方法中并传入您正在寻找的值以使其更灵活。

于 2019-03-14T13:44:11.217 回答
0

谢谢@JeffC 和@Sudha Velan。添加 Linq 参考(使用 System.Linq;)并进行更改后,它现在可以正常工作。

IList<NgWebElement> Rbtn = ngDriver.FindElements(By.XPath("//input[@name='paymentmode']"));
            IList<NgWebElement> RbtnValue = ngDriver.FindElements(By.XPath("//input[@name='paymentmode']/following::b[1]"));
            int Size = Rbtn.Count;
             for (int i = 0; i < Size; i++)
            {
                String Value = RbtnValue.ElementAt(i).Text;
                if (Value.Equals("UPI"))
                {
                    Rbtn.ElementAt(i).Click();
                    break;
                }
            } 

于 2019-03-14T13:51:01.757 回答
0

这是xpath,几乎等同于@JeffC。但这将确保即使在input和之间添加了一些标签b

//b[normalize-space(.)='Net Banking']/ancestor::div[@class='form-group']//input[@name='paymentmode' and @type='radio']
于 2019-03-14T13:54:10.060 回答