如何为 angular 应用程序 select 单选按钮
how to select radio button for angular application
<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="">
<b _ngcontent-c2="">Credit Card</b>
</div>
</div>
<div _ngcontent-c2="">
<div _ngcontent-c2="" class="form-group">
<input _ngcontent-c2="" name="paymentmode" type="radio">
<b _ngcontent-c2="">Debit Card</b>
</div>
</div>
<div _ngcontent-c2="">
<div _ngcontent-c2="" class="form-group">
<input _ngcontent-c2="" name="paymentmode" type="radio">
<b _ngcontent-c2="">Net Banking</b>
</div>
</div>
<div _ngcontent-c2="">
<div _ngcontent-c2="" class="form-group">
<input _ngcontent-c2="" name="paymentmode" type="radio">
<b _ngcontent-c2="">UPI</b>
</div>
</div>
对于以上 HTML,我正在尝试 select 基于单选按钮值的单选按钮。我正在使用 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
的定义。
有什么方法可以根据支付方式来解决 select 单选按钮吗?
使用 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;
}
}
您可以使用 XPath 通过包含的文本查找单选按钮,"Net Banking"
//input[@name='paymentmode']/following::b[.='Net Banking'][1]
我会把它放在一个方法中,并传入您正在寻找的值以使其更灵活。
谢谢@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;
}
}
这是xpath,几乎等同于@JeffC。但这将确保即使在 input
和 b
.
之间添加了一些标签
//b[normalize-space(.)='Net Banking']/ancestor::div[@class='form-group']//input[@name='paymentmode' and @type='radio']
<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="">
<b _ngcontent-c2="">Credit Card</b>
</div>
</div>
<div _ngcontent-c2="">
<div _ngcontent-c2="" class="form-group">
<input _ngcontent-c2="" name="paymentmode" type="radio">
<b _ngcontent-c2="">Debit Card</b>
</div>
</div>
<div _ngcontent-c2="">
<div _ngcontent-c2="" class="form-group">
<input _ngcontent-c2="" name="paymentmode" type="radio">
<b _ngcontent-c2="">Net Banking</b>
</div>
</div>
<div _ngcontent-c2="">
<div _ngcontent-c2="" class="form-group">
<input _ngcontent-c2="" name="paymentmode" type="radio">
<b _ngcontent-c2="">UPI</b>
</div>
</div>
对于以上 HTML,我正在尝试 select 基于单选按钮值的单选按钮。我正在使用 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
的定义。
有什么方法可以根据支付方式来解决 select 单选按钮吗?
使用 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;
}
}
您可以使用 XPath 通过包含的文本查找单选按钮,"Net Banking"
//input[@name='paymentmode']/following::b[.='Net Banking'][1]
我会把它放在一个方法中,并传入您正在寻找的值以使其更灵活。
谢谢@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;
}
}
这是xpath,几乎等同于@JeffC。但这将确保即使在 input
和 b
.
//b[normalize-space(.)='Net Banking']/ancestor::div[@class='form-group']//input[@name='paymentmode' and @type='radio']