我正在尝试从中读取值。下面是HTML代码:
<select name="user_type" id="user_type" class="select">
<option value="0">Select</option>
<option value="1"> Admin </option>
<option value="1"> Agent </option>
<option value="1"> Butler </option>
<option value="1"> Ops </option>
</select>
这是我在Selenium中使用.NET实现的代码:
query_UserType = driver.FindElement(By.Id("user_type"));
driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 30));
query_UserType.Clear();
query_UserType.Click();
query_UserType.SendKeys(" Agent ");
string str_myEle2 = query_UserType.GetAttribute("value");
Console.WriteLine("New User Type is: " + str_myEle2);
它给出错误“无效元件状态:元素当前不可交互,可能无法在以下行上操作”:
query_UserType.Clear();
我不知道该怎么修这个。请帮忙。谢谢
4条答案
按热度按时间oaxa6hgo1#
Selenium .NET库将
select
元素的操作 Package 到一个名为SelectElement的类中,您应该使用这个类,而不是您正在使用的方法。因此,引用
WebDriver.Support.dll
,使用OpenQA.Selenium.Support.UI
:SelectElement
将IWebElement
作为参数,因此您有责任 * 首先 * 找到select
元素:这个类上还有一个方便的方法,允许您通过
select
的 visibletext
属性在该select
中选择一个option
。类似地,你可以尝试找出当前选中的选项,
SelectElement
类也可以很容易地做到这一点:现在
SelectedOption
将是一个IWebElement
,表示当前在select
中选择的option
,所以要获得它的text
属性,它与其他元素没有什么不同:总而言之,结果是:
q3aa05252#
在我的例子中,网页上有两个元素具有相同的ID,我使用
find element by xpath
而不是find element by id
解决了这个问题。dy2hfwbg3#
如果仅Chrome浏览器出现此问题,请删除以下命令:
我遇到了同样的问题与 chrome 和它是固定后,删除清除命令.
如果你真的想删除文本框中的文本,尝试使用机器人类或任何其他键盘模拟器,并按下“退格键”/“删除”按钮。
uujelgoq4#
这个问题也发生在我身上。我遇到问题的代码片段是:
其中nameProject是输入文本,如下所示:
我将此输入文本Map如下:
我解决它只是改变句子的顺序,如bellow: