C#硒测试在特殊字符上中断?

时间:2019-02-14 16:06:09

标签: c# selenium

我目前为我的公司和我们的自动化提供了一个框架。今天有人发现了一个错误,并且我对如何解决它有一些疑问。基本上,我创建了很多其他测试人员可以访问的帮助程序,今天有人在检查该测试被炸掉的页面上的基本标题时注意到它,因为其中包含特殊字符。例如:

var heading = Driver.FindElement(By.CssSelector("h2")).Text.ToString();
Assert.That(heading.Contains("Welcome to (My) Company"));

由于(我的)阻止了测试,因此在“欢迎使用”部分的测试失败。

到目前为止,我已经通过执行这种方法找到了解决之道:

public IWebElement FindElementWithCssSelectorContainingText(string elementCssSelector, string regexSearchPattern, bool throwException = true)
    {
        try
        {
            SearchingForElement(By.CssSelector(elementCssSelector));
            FindElementByUniversalSelector(elementCssSelector, el => el.Value().ToLower().Contains(regexSearchPattern.ToLower()));
            return FindElementContainingText(By.CssSelector(elementCssSelector), regexSearchPattern);
        }
        catch (StaleElementReferenceException)
        {
            Log.Info(string.Format("Attempting to recover from stale element exception for <{0}>...", elementCssSelector));
            SearchingForElement(By.CssSelector(elementCssSelector));
            FindElementByUniversalSelector(elementCssSelector, el => el.Value().ToLower().Contains(regexSearchPattern.ToLower()));
            return FindElementContainingText(By.CssSelector(elementCssSelector), regexSearchPattern);
        }
        catch (WebDriverTimeoutException)
        {
            if (throwException)
                Assert.Fail("Could not find Element \"" + elementCssSelector + "\" with text \"" + regexSearchPattern + "\"");
            throw;
        }
    }

这确实有效,并且确实可以解决问题,但是我想以更通用的方法将其实现到帮助器类中。

我可以在某个地方定义一些正则表达式,然后以某种方式将其传递给助手吗?

例如,助手看起来像这样:

a<-c(1,2,3,NA,2)
b<-c(2,1,2,2,NA)
a<-factor(a,levels=c(1,2,3),labels=c("First","Second","Third"))
b<-factor(b,levels=c(1,2,3), labels=c("AA","BB","CC"))
dat<-cbind(a,b)
replace.na<-function(x){
    x<-as.factor(ifelse(is.na(x),9,x))
}
a<-ifelse(is.na(a),9,a)
str(a)
dat<-apply(dat,2,replace.na)
str(dat)

以上是测试人员调用的内容,只需输入css路径和期望的字符串即可。

很抱歉,发帖时间长,但让我发疯了。

0 个答案:

没有答案