Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中组合多个IF语句#_C#_Selenium Chromedriver - Fatal编程技术网

C# 如何在C中组合多个IF语句#

C# 如何在C中组合多个IF语句#,c#,selenium-chromedriver,C#,Selenium Chromedriver,我这里有一些有缺陷的逻辑。我的目标是,如果所有字段都有“”值,则返回true,否则返回false。如何在C#中修复此问题 我相信这样的办法应该行得通。我找不到所有这些变量都属于哪个类,但用合适的类替换var,我认为这应该可以 逻辑:将所有变量添加到列表中,使用lambda函数返回是否所有列表都匹配GetAttribute(“值”)=“” //将var替换为类类型或父类 List allFields=新列表{smtpHostInputField、smtpPortInputField、sername

我这里有一些有缺陷的逻辑。我的目标是,如果所有字段都有“”值,则返回true,否则返回false。如何在C#中修复此问题


我相信这样的办法应该行得通。我找不到所有这些变量都属于哪个类,但用合适的类替换var,我认为这应该可以

逻辑:将所有变量添加到列表中,使用lambda函数返回是否所有列表都匹配GetAttribute(“值”)=“”

//将var替换为类类型或父类
List allFields=新列表{smtpHostInputField、smtpPortInputField、sernameInputField、passwordInputField、senderInputField、ReceiveInputField};
foreach(所有字段中的var字段){Driver.WaitForElementValueNull(字段);}
返回allFields.All(t=>t.GetAttribute(“值”)==”;

另一种解决方法是将
WaitForElementValueNull
调用和空字符串检查提取到一个单独的方法。诸如此类:

private static bool WaitForElementValueNullAndEmpty(InputFieldType inputField)
{
    Driver.WaitForElementValueNull(inputField);
    return inputField.GetAttribute("value") == "";
}
     
public bool CheckFieldsAreEmpty()
{
    return WaitForElementValueNullAndEmpty(smtpHostInputField) ||
           WaitForElementValueNullAndEmpty(smtpPortInputField) ||
           WaitForElementValueNullAndEmpty(usernameInputField) ||
           WaitForElementValueNullAndEmpty(passwordInputField) ||
           WaitForElementValueNullAndEmpty(senderInputField) ||
           WaitForElementValueNullAndEmpty(receiverInputField);
}

上述代码将与所提供的算法相匹配,但是如果您想检查所有值是否为空,则< > > > < >代码>应被替换为<代码> & & < /代码>(如Jeremy Caney所注意到的)

< P>来说明评论中的@ MaldRead(正确)建议,请考虑此代码:

public bool CheckFieldsAreEmpty()
{
    Driver.WaitForElementValueNull(smtpHostInputField);
    if (smtpHostInputField.GetAttribute("value") != "")
        return false;
    Driver.WaitForElementValueNull(smtpPortInputField);
    if (smtpPortInputField.GetAttribute("value") != "")
        return false;
    Driver.WaitForElementValueNull(usernameInputField);
    if (usernameInputField.GetAttribute("value") != "")
        return false;
    Driver.WaitForElementValueNull(passwordInputField);
    if (passwordInputField.GetAttribute("value") != "")
        return false;
    Driver.WaitForElementValueNull(senderInputField);
    if (senderInputField.GetAttribute("value") != "")
        return false;
    Driver.WaitForElementValueNull(receiverInputField);
    if (receiverInputField.GetAttribute("value") != "")
        return false;

    return true;
}

当然,正如所强调的,您可以使用循环或LINQ查询来集中这个重复的逻辑。

反转测试。如果第一个字段不是空的,则整个条件失败,因此返回false,依此类推。如果所有内容都未通过非空测试,则返回true。嗯,但我要查找的是某种类型的AND,因此如果字段#2、字段#3和字段#4为value=“”,则返回true。@hedda这正是等待所有测试完成而不返回
false
-如果到达末尾,1、2、3、4、5和6一定都通过了测试。仅供参考:我将@madreflection的评论与代码示例结合起来作为答案,以帮助说明他们的建议。这将使我们更容易通过它的工作原理进行推理。(因为我没有提出,所以我把它标记为一个社区wiki。)我还包括了一个简写,用于集中重复代码。它将是
All
,而不是
Any
。如果它们都是空的,OP希望为true。@很好的一点是OP按照您描述的方式声明了它,然后为任何一个都编写了伪代码。不确定是哪一个OP在寻找。在顶部有明确的说明:“我的目标是如果所有字段都有”“value然后返回true”,在此之前,“我这里有一些有缺陷的逻辑”,很明显,代码并不能可靠地表示他们想要什么。这些应该是
&&
,因为OP试图解决的问题是确定所有值是否为空。我正在尝试此解决方案,但不能完全弄清楚InputFieldType应该是什么?
private static bool WaitForElementValueNullAndEmpty(InputFieldType inputField)
{
    Driver.WaitForElementValueNull(inputField);
    return inputField.GetAttribute("value") == "";
}
     
public bool CheckFieldsAreEmpty()
{
    return WaitForElementValueNullAndEmpty(smtpHostInputField) ||
           WaitForElementValueNullAndEmpty(smtpPortInputField) ||
           WaitForElementValueNullAndEmpty(usernameInputField) ||
           WaitForElementValueNullAndEmpty(passwordInputField) ||
           WaitForElementValueNullAndEmpty(senderInputField) ||
           WaitForElementValueNullAndEmpty(receiverInputField);
}
public bool CheckFieldsAreEmpty()
{
    Driver.WaitForElementValueNull(smtpHostInputField);
    if (smtpHostInputField.GetAttribute("value") != "")
        return false;
    Driver.WaitForElementValueNull(smtpPortInputField);
    if (smtpPortInputField.GetAttribute("value") != "")
        return false;
    Driver.WaitForElementValueNull(usernameInputField);
    if (usernameInputField.GetAttribute("value") != "")
        return false;
    Driver.WaitForElementValueNull(passwordInputField);
    if (passwordInputField.GetAttribute("value") != "")
        return false;
    Driver.WaitForElementValueNull(senderInputField);
    if (senderInputField.GetAttribute("value") != "")
        return false;
    Driver.WaitForElementValueNull(receiverInputField);
    if (receiverInputField.GetAttribute("value") != "")
        return false;

    return true;
}