C# Selenium:将文本存储到变量中以备将来验证

C# Selenium:将文本存储到变量中以备将来验证,c#,html,visual-studio,selenium,validation,C#,Html,Visual Studio,Selenium,Validation,在VisualStudio中使用Selenium 我需要帮助写两个测试用例。 更新: 从文本字段复制序列号并将此数据存储在变量中 从另一个文本字段复制序列号,并将该数据存储在另一个变量中。然后比较变量A和变量B,以验证两者是否相同 我希望这些测试用例是动态的,所以我不必指定实际的序列号。相反,我想复制的内容,不管它们包含什么序列号 我要复制序列号的HTML如下所示: <lina-list-item _ngcontent-c34="" _nghost-c40=""> <p _n

在VisualStudio中使用Selenium

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

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

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

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

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

    <lina-list-item _ngcontent-c34="" _nghost-c40="">
     <p _ngcontent-c34="">Serienummer</p>
     <h3 _ngcontent-c34="">Calpower11<!----></h3>
    </lina-list-item>
    
    然后我想将数据从另一个
    复制到变量B中

    这是此特定
    的完整Xpath:

    第二个
    的HTML:

    
    序列号

    Calpower11
    正如您所看到的,HTML没有太大区别。只有通过查看完整的Xpath,您才能注意到差异

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

    总结:

  • 帮助我将文本从一个
    复制到变量A中
  • 帮助我将另一个
    中的文本复制到变量B中
  • 请帮助我比较变量A和B,以确保它们包含相同的数据

  • 可以这样存储文本值或属性值

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


    然后像那样比较序列号

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

    通过文本识别一个元素,然后稍后使用
    .text
    提取相同的文本不是理想的方法。你能用更多的outerHTML来更新这个问题吗?这样两个元素都可以被唯一地识别出来?@DebanjanB我已经更新了这个问题。我已经为两个不同的
    指定了完整的Xpath,因此更容易识别它们。如果您需要更多信息,请告诉我。使用绝对Xpath是开始的好方法,但从长远来看,您可能更喜欢相对Xpath。因此,基于文本的实际HTML对于规范地回答您的问题是必要的。@DebanjanB如果我试图复制整个HTML文档并将其粘贴到此处,它太大,并且会使其“树结构”松动。使用Selenium IDE,我能够识别相对Xpath。你能帮我吗。或者你需要整个HTML?如果基于文本的HTML放松了树状结构,那也没关系,最重要的是我们需要包含父节点的HTML,这将帮助我们唯一地识别两个节点。对不起,我认为我的第一篇文章有点不清楚。我不想在任何地方写入特定的序列号(Calpower11)。我希望测试用例是动态的。请阅读我更新的问题。@David:您需要共享url或更多html,以检查网页上是否存在两个元素。我已在google文档链接中添加了html。见更新的问题。
    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
    }