为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕哥9229398 2021-11-07 19:34:26
 <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();有谁知道这个问题的解决方案?
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

  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);

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


查看完整回答
反对 回复 2021-11-07
?
波斯汪

TA贡献1811条经验 获得超4个赞

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


查看完整回答
反对 回复 2021-11-07
?
慕慕森

TA贡献1856条经验 获得超17个赞

根据您共享的HTML,单击带有公共文本的按钮,您需要引入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();


查看完整回答
反对 回复 2021-11-07
  • 3 回答
  • 0 关注
  • 203 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信