Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用selenium(C#)在网格中自动选择控件(单击并保持)_C#_Selenium_Selenium Webdriver - Fatal编程技术网

如何使用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用于等待帧出现,然后切换到它:)