c# - 如何告诉代码在两个变量之间进行选择并使它们相等?

标签 c# css selenium xpath

我正在进行单元测试,测试平台是一个动态网站,因此 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/

相关文章:

css - 为什么我有水平滚动条?

html - 为什么 flexbox 子项不拉伸(stretch)以填充父容器(包括 jsfiddle)?

python - 对 selenium 中的元素执行重复单击

c# - Hololens 中的 DLL 与 IL2CPP 后端发生冲突

c# - 显示自定义层次结构

c# - 使用 C# 组合框放置图像和字符串

c# - 初学者如何编写 Windows GUI 程序的综合教程

html - 放置一些图片后无法点击我的链接

python - 使用 selenium 和 chromedriver 时出现 BrokenPipeError

macos - 如何在 Mac 操作系统上安装 Selenium WebDriver