【问题标题】:How can i assert value which is dynamically generated in selenium webdriver using c#?我如何断言使用 c# 在 selenium webdriver 中动态生成的值?
【发布时间】:2023-04-04 15:42:02
【问题描述】:

我已生成动态值,我想使用“断言”验证该值。 可以请教一下吗?

这是我的代码:我想验证职位 1 中的职位

 Random jobtitle = new Random();
string jobtitle1 = string.Format("CVviaATS{0}_{1}", jobtitle.Next(2, 40).ToString(), DateTime.Now.ToString("ddMMyyyyhhmm"));
driver.FindElement(By.Id("ctl00_MiddleContent_EditJob1_EditJob1_VacTitle")).SendKeys(jobtitle1);//Generate random value for Job Title//

 IWebElement job1 = driver.FindElement(By.ClassName("jdtitle"));
            Assert.IsTrue(jobtitle.);

【问题讨论】:

  • 你到底想断言什么?该值是否设置为具有该 ID 的元素?您刚刚设置了它,那将是测试 WebDriver 是否有效,听起来对您来说不是很有用。
  • 实际上我已经创建了具有动态值的职位。然后我想断言反映在不同不同 id 上的值(我的意思是 title )。
  • 好的,所以使用相同的 drive.FindElement(By.Id(.... 来查找该元素并检查其值: element.GetAttribute("value") 或设置该值的任何属性.
  • 太棒了!那行得通!谢谢。
  • 好的,补充一下,作为答案,请将其标记为正确的,以便大家看到。不客气!

标签: c# selenium automation webdriver


【解决方案1】:

如果我正确地关注你,我认为你可以使用类似的东西:

Assert.IsTrue(job1.Contains(jobtitle));

如果您有大写/小写问题,您也可以将其与小写进行比较:

Assert.IsTrue(job1.ToLower().Contains(jobtitle.ToLower()));

【讨论】:

  • 我没有使用 assert IWebElement job1 = driver.FindElement(By.ClassName("jdtitle")); job1.GetAttribute("vactitle"); job1.Click();
  • 我应该使用任何引用吗?我无法添加“ToLower”
  • 对不起,我有那个图书馆。但它仍然没有来
【解决方案2】:

使用相同的drive.FindElement(By.Id(.... 查找该元素并检查其值:element.GetAttribute("value") 或设置该值的任何属性

【讨论】:

  • 感谢@Ricardo,这非常有帮助且有效。
【解决方案3】:

iWebElement job1 = driver.FindElement(By.XPath(string.Format("//a[contains(., '{0}')]", jobtitle1)));

iWebElement job1 = driver.FindElement(By.XPath(string.Format("//a[contains(., '{0}')]", jobtitle1)));

根据 zahed,我刚刚修改了选择器。它按预期工作。

【讨论】:

    猜你喜欢
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    • 2013-08-04
    相关资源
    最近更新 更多