在C#网站中使用Selenium进行测试,我需要测试XPath的更改

在C#网站中使用Selenium进行测试,我需要测试XPath的更改,c#,visual-studio,selenium,selenium-webdriver,C#,Visual Studio,Selenium,Selenium Webdriver,我需要用selenium和c#创建一个测试自动化工具来测试我公司的网站。一切正常,除了一件事:每次我在网站上重新加载任务(如“创建新用户”)时,某些字段的XPath都会更改。例如,名字字段不再是“//*[@id=\\“0FirstName\”]”,新的xpath将是“/*[@id=\\“2FirstName\”]”“,selenium不再像以前一样识别该字段->程序停止工作 有没有一种方法可以使动态函数忽略电子邮件前的号码 driver.FindElement(By.XPath("//*[@id

我需要用selenium和c#创建一个测试自动化工具来测试我公司的网站。一切正常,除了一件事:每次我在网站上重新加载任务(如“创建新用户”)时,某些字段的XPath都会更改。例如,名字字段不再是
“//*[@id=\\“0FirstName\”]”,新的xpath将是“/*[@id=\\“2FirstName\”]”“
,selenium不再像以前一样识别该字段->程序停止工作

有没有一种方法可以使动态函数忽略电子邮件前的号码

driver.FindElement(By.XPath("//*[@id=\"0FirstName\"]")).SendKeys("Selenium");

您可以按以下方式更改xpath:

driver.FindElement(By.Xpath("//*[contains(@id,'FirstName')]"));
您可以使用contains()

  • 您可以使用XPath函数,如:

    //*[contains(@id,'FirstName')]
    
  • 如果出于某种原因,它不起作用,即返回多个匹配项,您还可以通过使用and函数的组合实现某种形式的ends-with()函数,如:

    //*[substring(@id, string-length(@id) - string-length('FirstName')+ 1, string-length(@id))= 'FirstName']
    
  • 更多信息:

    //*[substring(@id, string-length(@id) - string-length('FirstName')+ 1, string-length(@id))= 'FirstName']