如何使用selenium(C#)在网格中自动选择控件(单击并保持)
我的代码是:如何使用selenium(C#)在网格中自动选择控件(单击并保持),c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,我的代码是: [TestMethod] public void ActionClickAndHold() { driver = new ChromeDriver(); driver.Manage().Window.Maximize(); driver.Navigate().GoToUrl("http://jqueryui.com/selectable/"); driver.FindElement(By.Id("se
[TestMethod]
public void ActionClickAndHold()
{
driver = new ChromeDriver();
driver.Manage().Window.Maximize();
driver.Navigate().GoToUrl("http://jqueryui.com/selectable/");
driver.FindElement(By.Id("selectable")).Click();
System.Threading.Thread.Sleep(10000);
driver.SwitchTo().Frame(0);
ReadOnlyCollection<IWebElement> lstItems = driver.FindElements(By.XPath("//*[@id='selectable']/li[1]"));
Actions builder = new Actions(driver);
builder.ClickAndHold(lstItems[1])
.ClickAndHold(lstItems[3])
.Click()
.Perform();
driver.SwitchTo().DefaultContent();
}
[TestMethod]
公共作废操作ClickAndHold()
{
驱动程序=新的ChromeDriver();
driver.Manage().Window.Maximize();
driver.Navigate().gotour(“http://jqueryui.com/selectable/");
driver.FindElement(By.Id(“可选”))。单击();
系统线程线程睡眠(10000);
驱动程序.切换到().帧(0);
ReadOnlyCollection lstItems=driver.FindElements(By.XPath(“//*[@id='selective']]]/li[1]”);
动作生成器=新动作(驱动程序);
builder.ClickAndHold(项目[1])
.单击并按住(项目[3])
。单击()
.Perform();
driver.SwitchTo().DefaultContent();
}
它不起作用。它不会在网格中单击并保持不变。我在哪里知道我的错误?事实上,您将使用错误的元素,请尝试以下操作:-
driver = new ChromeDriver();
driver.Manage().Window.Maximize();
driver.Navigate().GoToUrl("http://jqueryui.com/selectable/");
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(3))
wait.Until(ExpectedConditions.FrameToBeAvailableAndSwitchToIt(By.ClassName("demo-frame")));
ReadOnlyCollection<IWebElement> lstItems = wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.CssSelector("#selectable li")));
builder.ClickAndHold(lstItems[1])
.ClickAndHold(lstItems[3])
.Click()
.Perform();
driver.SwitchTo().DefaultContent();
driver=newchromedriver();
driver.Manage().Window.Maximize();
driver.Navigate().gotour(“http://jqueryui.com/selectable/");
var wait=new WebDriverWait(驱动程序,时间跨度从秒(3))开始)
wait.Until(ExpectedConditions.frametobeavailable和switchtoit(By.ClassName(“demo frame”));
ReadOnlyCollection lstItems=wait.Until(由.CssSelector(“#可选li”))指定的所有元素的预期条件和可见性);
builder.ClickAndHold(项目[1])
.单击并按住(项目[3])
。单击()
.Perform();
driver.SwitchTo().DefaultContent();
希望有帮助。:)您是否有任何错误,您能看到它卡在哪里了吗?我不知道你为什么要单击“可选”元素开始,为什么在找到并单击它后要切换到框架…你知道selenium与C#的关系吗?是的,但是知道你的程序在哪里失败会很有帮助,能够帮助你。非常感谢。你能解释一下命令行吗?我不明白。@D.ÝNguyện所有的事情都和您已经做的一样,唯一的区别在于定位器,您将使用
xpath
,它只定位单个li
元素,而您应该需要所有li
元素,以及我实现的新东西,它将等待元素,直到所有元素在dom上可见……:@D.ÝNguyện用于等待帧出现,然后切换到它:)