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
相关产品推荐
相关产品推荐

