首页 > 解决方案 > Selenium:将文本存储到变量中以供将来验证

问题描述

在 Visual Studio 中使用 Selenium。

我需要帮助编写两个测试用例。更新:

  1. 从文本字段复制序列号并将此数据存储在变量中。

  2. 从另一个文本字段复制序列号并将该数据存储在另一个变量中。然后将变量 A 与变量 B 进行比较,以验证两者是否相同。

我希望这些测试用例是动态的,所以我不必指定实际的序列号。相反,我想复制<h3>它们包含的序列号的内容。

我要复制序列号的 HTML 如下所示:

<lina-list-item _ngcontent-c34="" _nghost-c40="">
 <p _ngcontent-c34="">Serienummer</p>
 <h3 _ngcontent-c34="">Calpower11<!----></h3>
</lina-list-item>

我想将数据复制<h3>到变量 A中。

这是这个特定的完整 Xpath <h3>

/html/body/div[3]/div[2]/div/mat-dialog-container/lina-device-details-dialog/div/mat-tab-group/div/mat-tab-body[1]/div/div/div[2]/lina-device-information/div[1]/div[1]/lina-list-wrapper/div/lina-list-item[1]/h3

然后我想将数据从另一个复制<h3>到变量 B

这是这个特定的完整 Xpath <h3>

/html/body/div[3]/div[2]/div/mat-dialog-container/lina-register-case-dialog/form/div/div/div[1]/div/lina-device-information-compact/div/div[2]/div[1]/lina-list-wrapper/div/lina-list-item[1]/h3

第二个的 HTML <h3>

<lina-list-item _ngcontent-c49="" _nghost-c40="">
 <p _ngcontent-c49="">Serienummer</p>
 <h3 _ngcontent-c49="">Calpower11</h3>
</lina-list-item>

如您所见,HTML 差别不大。只有查看完整的 Xpath,您才能注意到其中的区别。

注意:所有测试用例都被调用"public void TestCaseName()",所以我希望这将使我创建的变量在所有其他测试用例中都可以访问?

概括:

  1. 帮我将文本从一个复制<h3>到变量 A
  2. 帮我将文本从另一个复制<h3>到变量 B
  3. 帮助我比较变量 A 和 B 以确保它们包含相同的数据。

标签: c#htmlvisual-studioseleniumvalidation

解决方案


您可以像这样存储文本值或属性值。

IWebElement element = driver.FindElement(By.Xpath("//lina-list-item[1]/h3[contains(text(),'Calpower11')]"));
String serialNumber = element.Text;

或者

IWebElement element = driver.FindElement(By.Xpath("//lina-list-item[1]/h3[contains(text(),'Calpower11')]"));
String serialNumber = element.GetAttribute("innerHtml");

然后像这样比较序列号。

if (serialNumber.Equals("Calpower11", StringComparison.InvariantCultureIgnoreCase)) 
{ 
    //statement
}

推荐阅读