You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Do While循环异常:点击Get Status按钮后无法退出循环

Selenium按钮操作代码与问题解析

先看这段用于处理按钮点击的C#自动化代码:

public Login ClickGetStatus() { 
    //IWebElement btnGetStatus = driver.FindElement(By.XPath("//*[contains(@id,'GetStatus')]")); 
    do { 
        buttonName_GetStatus[0] = "abc"; 
        Thread.Sleep(3000); 
        bool is_displayed = wrapper.IsElementDisplayed( 
            driver.FindElement(By.XPath("//*[contains(@id,'GetStatus')]"))); 
        //bool IsElementDisplayed = driver.FindElement(By.XPath("//*[contains(@id,'GetStatus')]")).Displayed; 
        if (is_displayed) { 
            //wrapper.Click(btnExecute); 
            string getnameofbutton1 = driver.FindElement( 
                By.XPath("//*[contains(@id,'GetStatus')]")).GetAttribute("id"); 
            Console.WriteLine("Name of the button is : " + getnameofbutton1); 
            buttonName_GetStatus = getnameofbutton1.Split('_'); 
            driver.FindElement( 
                By.XPath("//*[contains(@id,'GetStatus')]")).Click(); 
        } else { 
            Console.WriteLine("Element is not displayed"); 
        } 
    } while (buttonName_GetStatus[0] == "GetStatus"); 
    return this; 
}

代码逻辑拆解

  • 定位界面上的Get Status按钮,由于按钮ID是动态变化的,用XPath的contains方法做模糊匹配
  • 如果按钮在页面上显示,就获取它的完整ID并打印,随后执行点击操作
  • 如果按钮未显示,控制台输出提示信息

现存问题

这段代码能正常完成Get Status按钮的点击操作,但存在一个关键缺陷:当按钮名称变为View Result后,循环无法退出,程序会持续尝试查找Get Status按钮,陷入无效循环。

内容的提问来源于stack exchange,提问作者Hargovind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:57:13