C# ElementNotVisibleException尝试使用Xpath将数据输入带有Selenium的文本框
我正在使用C#中的Selenium将数据输入网页上的文本框: 但我得到了这个错误: OpenQA.Selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与之交互 我正在使用@name,但是页面上有两个name=“MinPrice”控件 以下是HTML:C# ElementNotVisibleException尝试使用Xpath将数据输入带有Selenium的文本框,c#,selenium,xpath,webdriver,C#,Selenium,Xpath,Webdriver,我正在使用C#中的Selenium将数据输入网页上的文本框: 但我得到了这个错误: OpenQA.Selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与之交互 我正在使用@name,但是页面上有两个name=“MinPrice”控件 以下是HTML: <div class="form-group for-sale"> <label>Min Price</label> <input class
<div class="form-group for-sale">
<label>Min Price</label>
<input class="form-control" name="MinPrice" min="0" placeholder="Minimum Price" value="" type="number"></input>
我还尝试使用XPath,但结果类似:
txtMinPrice = Driver.Instance.FindElement(By.XPath("//input[contains(@name,'MinPrice') and type='number']"));
如果有人有任何想法……这简直让我发疯。ElementNotVisibleException当selenium可以在DOM中找到一个元素但它没有在屏幕上呈现时会发生异常 当我以前遇到这个错误时,它通常是由以下三种原因之一引起的:
driver.manage().window().maximize()
在测试开始时确保所有页面元素都在视图中
如果这不起作用,那就是xpath。尝试类似于/*[@class=“form group for sale”]/input的方法
或者使用mozilla firefox中的Firefinder加载项检查您的xpath是否有效并且是否存在于页面上。Selenium擅长向下滚动查看项目,但当涉及到向上滚动时,它是一个PiA,通常会引发该异常。我通常只是做一些
element.SendKeys(Keys.Home);
Thread.Sleep(100);
可能是@AlexGravely的重复,这与这个问题无关。我尝试添加一个隐式wait和一个Sleep,但没有帮助。我将页面设置为在加载时最大化,因此元素处于视图中。而且似乎没有任何东西重叠元素,阻止它。我不知道还有什么可以尝试在调试模式下缓慢地逐步处理代码,如果出现计时问题,通常会暴露出来。如果您得到相同的异常,那么DOM中可能有它不喜欢的东西。我目前已经在使用.maximize()。尝试使用Sleep(10)和更长的时间,但它似乎仍然认为该元素是隐藏的,因此我无法与itOk进行交互。itOk是使用react.js或类似的框架隐藏class=“form group for sale”]/input的前端,直到另一个元素像按钮一样被激活?我认为我不需要向下滚动,因为该元素是可见的,在页面加载时,位于页面顶部附近。睡眠似乎没有帮助
element.SendKeys(Keys.Home);
Thread.Sleep(100);