我正在进行单元测试,测试平台是一个动态网站,因此 CSS Selector 和 xpath 经常变化。所以我想也许我可以同时使用 CSS 和 xpath 来检索相同的文本。
我现在面临的主要问题是如何告诉代码使两个检索到的字符串相等,这样即使 xpath 失败也没关系,CSS 选择器仍然可以工作,反之亦然。
这是一个简单的代码
string text1 = _driver.FindElement(By.XPath("xpathtext")).Text;
string text2 = _driver.FindElement(By.CssSelector("csstext")).Text;
text1 = text2;
//then use text1 or text2
有什么干净整洁的方法吗?
最佳答案
IWebElement element1 = driver.FindElementIfExists(By.XPath("xpathtext"));
IWebElement element2 = driver.FindElementIfExists(By.CssSelector("csstext"));
string value = (element1 != null ? element1.Text : (element2 != null ? element2.Text : null));
它依赖于 FindElementIfExists 扩展方法。只需在您的元素中创建此类即可:
public static class WebDriverExtensions
{
public static IWebElement FindElementIfExists(this IWebDriver driver, By by)
{
IWebElement result = null;
try
{
result = driver.FindElement(by);
}
catch { }
return result;
}
}
关于c# - 如何告诉代码在两个变量之间进行选择并使它们相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34465234/