如何通过 Selenium 和 C# 根据 HTML 单击带有公开文本的按钮

 <div class="actionButton-container row">

                        <input type="hidden" name="addComment" value="TES-2" id="addCommentTES-2"/>

                          <div class="col-sm-12 col-xs-12">

                            <!-- RESET BUTTON -->

                            <!-- button type="submit" class="btn blue changeBtn" id="Add" type="submit">Add</button>

                            <button type="button" class="btn white changeBtn" id="cancel">Cancel</button> -->




                            <button class="btn blue changeBtn" id="public" onclick="addCommentsForUser()" type="button">Public</button>

                              <button class="btn blue changeBtn" id="inner" onclick="addCommentsForUser()" type="button">Inner</button>

                              <button type="button" class="btn white changeBtn" id="cancel">Cancel</button>

                          </div>


                      </div>

上面是 HTML 代码。我尝试使用下面的代码来获取 selenium 中的按钮并执行单击。它说找不到元素。


driver.FindElement(By.ClassName("actionButton-container")).FindElement(By.Id("public")).Click();

或者


driver.FindElement(By.Id("public")).Click();

有谁知道这个问题的解决方案?


慕哥9229398
浏览 204回答 3
3回答

慕莱坞森

&nbsp; driver.FindElement(By.XPath("//*[@id='commentSFHD-12']")).SendKeys("TEST Function");&nbsp; System.Threading.Thread.Sleep(5000);&nbsp; IWebElement ibtn3 = driver.FindElement(By.Id("public"));&nbsp; IJavaScriptExecutor executor = (IJavaScriptExecutor)driver;&nbsp; executor.ExecuteScript("arguments[0].click();", ibtn3);通过使用上面的代码,它现在可以正常工作

波斯汪

您可以这样使用,因为您没有共享 URL,因此很难找到结论。但是试试这个:WebDriverWait wait = new WebDriverWait(driver.driver, TimeSpan.FromSeconds(Time));wait.Until(ExpectedConditions.ElementToBeClickable(element));或者WebDriverWait wait = new WebDriverWait(driver.driver, TimeSpan.FromSeconds(Time));wait.Until(ExpectedConditions.visibilityOfElementLocated(element));

慕慕森

根据您共享的HTML,单击带有公共文本的按钮,您需要引入WebDriverWait以使所需元素可点击,您可以使用以下解决方案:new&nbsp;WebDriverWait(driver,&nbsp;TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//div[@class='actionButton-container&nbsp;row']//button[@class='btn&nbsp;blue&nbsp;changeBtn'&nbsp;and&nbsp;@id='public']"))).Click();
打开App,查看更多内容
随时随地看视频慕课网APP