如何通过Selenium和C#按HTML上的公共文本单击按钮

时间:2018-07-31 02:56:29

标签: c# selenium selenium-webdriver xpath webdriver

 <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代码。我尝试使用下面的代码来获取硒中的按钮并单击。它说找不到该元素。

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

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

有人知道解决方案吗?

3 个答案:

答案 0 :(得分:0)

您可以这样使用,因为您不共享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));

答案 1 :(得分:0)

根据您共享的 HTML ,单击带有 Public 文本的按钮,您需要为所需的引入 WebDriverWait >可以点击的元素,您可以使用以下解决方案:

new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//div[@class='actionButton-container row']//button[@class='btn blue changeBtn' and @id='public']"))).Click();

答案 2 :(得分:0)

  driver.FindElement(By.XPath("//*[@id='commentSFHD-12']")).SendKeys("TEST Function");
  System.Threading.Thread.Sleep(5000);
  IWebElement ibtn3 = driver.FindElement(By.Id("public"));
  IJavaScriptExecutor executor = (IJavaScriptExecutor)driver;
  executor.ExecuteScript("arguments[0].click();", ibtn3);

通过使用上面的代码,它现在可以正常工作