【发布时间】:2019-11-13 22:35:37
【问题描述】:
我目前正在为我将 selenium 与 Specflow 结合使用的应用程序表单创建自动测试。 在我的 Specflow 场景中,我有一个场景大纲,其中包含一些我希望使用的示例。使用场景大纲中示例中的值填充简单文本字段没有问题,但我似乎无法让 selenium 从下拉列表中选择与我在 specflow 场景大纲中相同的项目。
Specflow scenario outline step
Specflow scenario outline example data
Sending the data from the example
Cathing and populating the text field
我将如何复制它而不是填充文本字段,我想在下拉列表中选择一个与 specflow 场景大纲中的值相同的项目?
目前我已经创建了步骤和示例,但我不知道如何正确发送数据并捕获并单击下拉列表中的正确项目
Specflow scenario outline step for dropdown
Specflow scenario outline example data for drop down items
编辑 1: 我为图层和步骤页面尝试过的当前代码
成功点击下拉列表但未选择与特征大纲中相同的值
public string MaritalStatus
{
set
{
_driver.FindElement(By.Id("mainApplicant.maritalStatus")).Click();
_driver.FindElement(By.XPath("//ul[@class='dropdown-menu show']//li[@role='presentation']//a[@class='dropdown-item']")).SendKeys(value);
}
}
[Then(@"I choose value (.*) in dropdown MainApplicantMaritalStatus and Check Value")]
public void ThenIChooseValueInDropdownMainApplicantMaritalStatusAndCheckValue(string value)
{
_cashLoanPage.MaritalStatus = value;
}
成功点击下拉列表但只选择下拉列表中的第一项
public void MaritalStatus1()
{
_driver.FindElement(By.Id("mainApplicant.maritalStatus")).Click();
_driver.FindElement(By.XPath("//ul[@class='dropdown-menu show']//li[@role='presentation']//a[@class='dropdown-item']")).Click();
}
[Then(@"I choose value (.*) in dropdown MainApplicantMaritalStatus and Check Value")]
public void ThenIChooseValueInDropdownMainApplicantMaritalStatusAndCheckValue1(string x)
{
_cashLoanPage.MaritalStatus1();
}
编辑 2: 在 Dazed 的帮助下,此代码按预期工作,以防有人偶然发现类似问题
public void MaritalStatus(string value)
{
_driver.FindElement(By.Id("mainApplicant.maritalStatus")).Click();
_driver.FindElement(By.XPath(string.Format("//ul[@class='dropdown-menu show']//li[@role='presentation']//a[text()='{0}']", value))).Click();
}
【问题讨论】:
-
嗨 - 您可以将您的代码发布到您的问题中吗?
-
遗憾的是,我无法发布所有代码,因为它包含我无法分享的信息,我已经在图像中附加了所有相关和需要的代码,应该足够了
-
您需要做的是审查您的代码,以便将very_important_information 更改为难以置信的_useless_information。人们通常无法点击 S/O 之外的链接,因此我建议发布您的审查代码以获得答案。