如何断言一个页面包含两个可能的文本之一(所以一个“或”或“断言”)?

时间:2019-01-04 10:52:09

标签: c# .net selenium selenium-webdriver

我正在尝试验证页面是否包含两种可能的文本之一。我知道如何断言主体包含某些信息,但是我不知道如何在断言中包含“或”或“或”结构。谁能帮我吗?

下面您将看到我用来断言该页面包含特定文本的常规代码。 如果有人可以告诉我如何断言该页面包含“ Text1”或“ Text2”,那将是巨大的帮助。

 Button btnUpdateFamily;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.self_mem_details_family_info,
            container, false);

    return v;
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    btnUpdateFamily = view.findViewById(R.id.btnUpdateFamily);

    btnUpdateFamily.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Toast.makeText(getActivity(), "Button Clicked",
                    Toast.LENGTH_SHORT).show();

        }
    });


}

谢谢!

2 个答案:

答案 0 :(得分:4)

您的帖子并不确定,因为您要的是either-or,还需要and。我猜你的意思是“我如何才能检查该页面仅包含两个文本之一:当它包含Text1时,它不应该包含Text2”。

仅使用binary OR Operator就无法到达目的地,因为true | true等于true

XOR Operator来了。

  

对于bool操作数,^计算其操作数的逻辑异或。也就是说,当且仅当其操作数正好是true时,结果才是true

尝试这样的事情:

Assert.IsTrue(body.Text.Contains("TEXT1") ^ body.Text.Contains("TEXT2"));

答案 1 :(得分:0)

您可以执行所需的检查并将每个结果存储在变量中,然后对变量执行断言。

var text1Exists = body.Text.Contains("TEXT1");
var text2Exists = body.Text.Contains("TEXT2");
Assert.IsTrue(text1Exists && text2Exists);