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>
答案 0 :(得分:11)
是的,你可以做到。使用xpath的类名,您可以执行单击操作。
例如:
driver.FindElement(By.ClassName("AddContentBTN")).Click();
答案 1 :(得分:6)
Selenium
提供了各种searcg选项来查找元素。查看documentation
了解详情。
这些是广泛使用的搜索选项。
用法:
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']