WatIn Add a new option to a Selectlist?

2019-08-24 08:24发布

I need to add a new option to a selectList in one of my unit tests, and I can't figure out how to do it.

The Dropdown currently has 2 options, I want to add a third, and use it.

I tried to use JavaScript injection using http://stevenharman.net/blog/archive/2007/07/10/add-option-elements-to-a-select-list-with-javascript.aspx as a base, but that failed. I get exceptions that crash the IE browser every time, and the text "RunScript failed" gets printed into my logs even though I don't use that text in my error output.

Is this possible in Watin? Or has Open Source Failed me?

1条回答
Fickle 薄情
2楼-- · 2019-08-24 08:36

Using the code in the link you provided, with one small change I've gotten it to work.

My changes

  • Changed the ID to the ID of my dropdown (of course!)
  • Changed the $ in the element get to 'document.getElementById'. With the $ in there instead I don't see any obvious errors or anything like that; just no action taken.

The 'New Option' is added to the dropdown as the last item and it is the selected item.

string js = "";
js = js + "var theSelectList = document.getElementById('myDropDownID'); ";
js = js + " AddSelectOption(theSelectList, \"My Option\", \"123\", true);";
js = js + " function AddSelectOption(selectObj, text, value, isSelected) ";
js = js + "{";
js = js + " if (selectObj != null && selectObj.options != null)";
js = js + "{";
js = js + " selectObj.options[selectObj.options.length] = new Option(text, value, false, isSelected);";
js = js + "}}";

myIE.Document.Eval(js);

My setup

  • WatiN 2.0
  • IE8
  • Win7

Checked when the dropdown has 1 entry and 2 entries; both scenarios had "My Option" added without issue.

查看更多
登录 后发表回答