无法识别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 =]")

它们都不能将值传递到文本框中。请帮忙

无法识别c#中的硒元素

你可以使用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");