C#Selenium如何实现没有id的点击按钮

时间:2016-03-23 06:24:07

标签: c# selenium

C#Selenium如何实现无ID的点击按钮

这是html:

<div class="fe-margin"> 
  <button class="btn btn-default" data-bind="click: $root.addParameter, enable: $root.selectedParameter() == null" type="button"/>
  Add parameter button
</div>

9 个答案:

答案 0 :(得分:11)

是的,你可以做到。使用xpath的类名,您可以执行单击操作。

例如:

driver.FindElement(By.ClassName("AddContentBTN")).Click();

答案 1 :(得分:6)

Selenium提供了各种searcg选项来查找元素。查看documentation了解详情。

这些是广泛使用的搜索选项。

  • 类名
  • CssSelector
  • 编号
  • 连结文字
  • 名称
  • PartialLinkText
  • 标签名
  • 的XPath

用法:

var element = driver.FindElement(By.ClassName("btn-default")); // works for your case.
var element = driver.FindElement(By.Id("closeButton"));
var element = driver.FindElement(By.XPath("//*[@class='menu_bg']/ul/li[3]"));
var element = driver.FindElement(By.CssSelector("#import>a"));

使用任何选择器获取元素后,您只需要对其执行Click

element.Click();

答案 2 :(得分:2)

您可以点击使用JavaScript

看不到的按钮
ldc

答案 3 :(得分:1)

尝试使用此Xpath-

var element = driver.FindElement(By.XPath("//button[@class ='btn btn-default']"));

element.Click();

谢谢

答案 4 :(得分:0)

您可以ClassName使用其中一个类

执行此操作
driver.FindElement(By.ClassName("btn-default")).Click();
// or
driver.FindElement(By.ClassName("btn")).Click();

CssSelector两个班级

driver.FindElement(By.CssSelector(".btn.btn-default")).Click();
  

修改

错误

  

元素在点

时无法点击

意味着Selenium无法看到该按钮,因此无法点击该按钮。你需要先滚动它

IWebElement button = driver.FindElement(By.ClassName("btn-default")); // locate the button, can be done with any other selector
Actions action = new Actions(driver);
action.MoveToElement(button).Perform(); // move to the button
button.Click();

答案 5 :(得分:0)

使用此XPath按文本查找按钮:

"//div[normalize-space(.)='Add parameter button']/button"

答案 6 :(得分:0)

这里提供的答案提供了完成这项工作的大部分方法。这是由Selenium提供的选择类和手动&#39;用JavaScript。偶尔我遇到了奇怪的按钮和菜单实现,这些方法都不适用于我。我当时做的是将鼠标移到按钮上并拍摄一个免费点击。 Selenium提供了一种方法:

Actions action = new Actions(Driver);
action.MoveToElement(/IWebElement here/).Perform();
action.Click();   
   or
action.SendKeys(OpenQA.Selenium.Keys.Enter).Perform();

如果这个失败了我的最后一张牌就是图像识别库, 就像github上的一些c#包装的Sikuli包。

答案 7 :(得分:0)

IWebElement btn = Firefox.FindElement(By.ClassName("btn")); btn.Click();

这应该做到。 我发现使用ClassName的一部分可以完成这项工作。

答案 8 :(得分:0)

您可以使用按钮名称或文字:

driver.FindElements(by.TagName("button")).FirstOrDefault(ele=>ele.GetAttribute("Name").ToLower().Equals("Submit")).click();

或区分大小写:

driver.FindElements(by.TagName("button")).FirstOrDefault(ele=>ele.Text.Equals("Name").Click();

或者,就您而言:

df_new = df_test.apply(lambda row: pd.Series([row['ID'],product_recommendation_model.predict(row)] ,axis=1)
df_new.columns = ['ID','Result']