Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/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
C# 含硒碳:元素不可见_C#_Unit Testing_Selenium - Fatal编程技术网

C# 含硒碳:元素不可见

C# 含硒碳:元素不可见,c#,unit-testing,selenium,C#,Unit Testing,Selenium,我正在尝试在c中使用selenium创建一个自动化的ui测试。这是我的密码: driver = new ChromeDriver(); driver.Manage().Window.Maximize(); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30)); driver.Navigate().GoToUrl("my_url"); driver.Find

我正在尝试在
c
中使用
selenium
创建一个自动化的ui测试。这是我的密码:

    driver = new ChromeDriver();
    driver.Manage().Window.Maximize();
    driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));
    driver.Navigate().GoToUrl("my_url");
    driver.FindElementById("textBox").Clear();
    driver.FindElementById("textBox").SendKeys("tire");
    driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));
    var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
    wait.Until((ExpectedConditions.ElementIsVisible(By.Id("Moto"))));
    driver.FindElementById("Moto").Click();
在使用wait.till之前,我得到了异常
ElementNotVisibleException
,但现在我得到了异常
WebDriverTimeoutException
,因为id为“Moto”的元素不可见

以下是DOM的一部分的屏幕截图:

那么,为什么找不到moto复选框或该复选框不可见呢?

请尝试下面的代码(在
Java
中),因为它在我这端为相同的结构工作-

driver.findElement(By.xpath("//label[@for='Moto']")).click();
我不知道为什么按id查找
标记时会出现问题,请尝试下面的代码(在
Java
中),因为它在我这边为相同的结构工作-

driver.findElement(By.xpath("//label[@for='Moto']")).click();

我不知道为什么按id查找标签会出现问题。您可能需要滚动到元素以使其可见

IWebElement moto = driver.FindElement(By.Id("Moto"));

Actions actions = new Actions(driver);
actions.MoveToElement(moto).Perform();

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
wait.Until(ExpectedConditions.ElementIsVisible(By.Id("Moto"))).Click();

您可能需要滚动到元素以使其可见

IWebElement moto = driver.FindElement(By.Id("Moto"));

Actions actions = new Actions(driver);
actions.MoveToElement(moto).Perform();

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
wait.Until(ExpectedConditions.ElementIsVisible(By.Id("Moto"))).Click();

它不起作用了。我仍然得到一个ElementNotVisible例外它似乎覆盖了我的输入,这就是为什么它不可见的原因。请尝试这个,它可能会有帮助-
WebElement=driver.findElement(By.xpath(//input[@id='nasik']);JavascriptExecutor js=(JavascriptExecutor)驱动程序;js.executeScript(“参数[0]。单击();”,元素)最后一条评论为我提供了解决方案。感谢您必须知道,使用JSE不是一个用户场景。没有用户可以使用Javascript单击元素。如果您不关心用户场景,那么可以忽略此注释。它不起作用。我仍然得到一个ElementNotVisible例外它似乎覆盖了我的输入,这就是为什么它不可见的原因。请尝试这个,它可能会有帮助-
WebElement=driver.findElement(By.xpath(//input[@id='nasik']);JavascriptExecutor js=(JavascriptExecutor)驱动程序;js.executeScript(“参数[0]。单击();”,元素)最后一条评论为我提供了解决方案。感谢您必须知道,使用JSE不是一个用户场景。没有用户可以使用Javascript单击元素。如果您不关心用户场景,那么可以忽略此注释。它不起作用。我仍然收到WebDriverTimeoutExceptionexception@BudaGavril复选框祖先树中是否有一个属性
style=“display:none”
?它似乎覆盖了我的输入,这就是为什么它不可见它不工作的原因。我仍然收到WebDriverTimeoutExceptionexception@BudaGavril复选框祖先树中是否有属性
style=“display:none”
?它的标签似乎覆盖了我的输入,这就是它不可见的原因