gpt4 book ai didi

c# - 使用 pageobject c# selenium 发送值

转载 作者:行者123 更新时间:2023-11-30 23:14:17 25 4
gpt4 key购买 nike

我正在尝试创建一个函数,用于在 dom 文档中查找带有文本的元素。

这就是我试图实现这一目标的方式:

PageObject 中的

IWebElement:

[FindsBy(How = How.XPath, Using = "//*[contains(text()")] 
IWebElement getText { get; set; }

IWebElement 扩展方法:

public static void containsText(this IWebElement element, string value)
{
element.FindElement(By.XPath(",'" + value + "')]"));
}

方法:

public AutomationPage findText()
{
getText.containsText("test")
}

所以我想要实现的是该方法应该找到整个 Xpath。

正确的输出应该是:

"//*[contains(text(),'test')]"

但它给了我:

Could not find element by: By.XPath: //*[contains(text()

最佳答案

这并不像您期望的那样有效。基本上,您尝试使用 xpath //*[contains(text()) 查找元素,然后尝试使用 xpath ,'test') 查找子元素]。两者都不是有效的 xpath。

对于动态xpaths,最好使用函数而不是FindsBy

像这样:

private IWebElement GetElementContainsText(string text)
{
return driver.FindElement(By.XPath("//*[contains(text(), '" + text + "')];
}

长话短说,您必须在创建您的 By 和调用 FindElement 之前构造您的选择器

我能理解在这些情况下放弃 FindsBy 的悲伤,以及无法使用很酷的 extension 方法的悲伤。我真的希望我有一个解决方案可以按照您尝试做的方式做事,但从我所看到的情况来看,以上是这些情况下的正确方法。干杯:)

关于c# - 使用 pageobject c# selenium 发送值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43187664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com