无法识别c#中的硒元素
本文关键字:元素 识别 | 更新日期: 2023-09-27 18:10:04
我正在自动化一个商业应用程序,当我尝试使用CSS、Xpath、ID来识别元素时,该元素在Firebug中被识别并显示为只有一个匹配节点,但是当我将该元素用于测试用例自动化时。我看到下面的错误
类型为"OpenQA.Selenium"的异常。在WebDriver.dll中发生了NoSuchElementException,但没有在用户代码中处理
请查看以下应用程序的html代码
<div id="QueryOption1" class="SelectedDiv" xmlns:local="#local-functions" xmlns:msxsl="urn:schemas-microsoft-com:xslt" name="QueryOptions">
<span>
<div>
<div class="leftSide">Subscriber ID: </div>
<input id="Subscriber_ID" class="floatLeft" type="text" name="InsuranceNum" size="15"/>
</div>
下面是我尝试过的选项
By.id (Subscriber_First_Name)
。CssSelector("#QueryOption1>div> #Subscriber_Last_Name")
By.Xpath("//输入[@ id = ' Subscriber_First_Name ']")
By.CssSelector("输入[id = Subscriber_First_Name][文本type =]")
它们都不能将值传递到文本框中。请帮忙
你可以使用IJavaScriptExecuter
IJavaScriptExecutor jsExc = browser as IJavaScriptExecutor;
string textValue = jsExc.ExecuteScript("return document.getElementById('Subscriber_ID').value;").ToString();
为什么你使用id作为:- Subscriber_First_Name而在你上面的HTML "id"是:-
By.id("QueryOption1") // for first div
By.id("Subscriber_ID") //for input tag
By.xpath("//input[@id='Subscriber_ID']")
或者也可以使用名称定位符
By.name("QueryOptions")
By.name("InsuranceNum")
或者可以使用JavascriptExecutor
设置值JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("$('#Subscriber_ID').attr('value','user')");
我很困惑,为什么你提供的HTML显示输入作为Subscriber_ID的id,你在你的代码示例中使用Subscriber_First_Name。这可能是问题,但你没有提供你正在使用的实际代码,所以我不确定。
试试这个
driver.FindElement(By.Id("Subscriber_ID")).SendKeys("some text goes into the text box");