Динамический выпадающий список не срабатывают .Чистая глаг веб-браузера.
I have a .net form which should navigate to a particular webpage in .netwebbrowser and once loaded it should select a combobox called status and select option pending, it should trigger and show another combobox called pending reason with list of pending reason and from there it should select 2 and or third option based on some criteria. The webpage is my organisations internal tool, and this project is already running perfectly fine in excel VBA macro but I now have to migrate it to .net form kinda application. I have trouble in making the first combobox trigger the second one. I can see that the first combobox where the dropdown changes from assigned to pending. However the second combobox doesn't appear. In excel VBA this automation was done using chrome and selenium. However in .net VB webbrowser I think some internal trigger mechanism doesn't work. I'll postmy html and jquery function below.
<table id="left_nav"> <tbody> <tr> <td colspan="2"> <label>Status</label> <span id="editNavMenuLink" class="small_link">Click to edit</span> <br/> <div class="dynamic_select_holder"> <select name="status" id="status"> <option value="" ></option> <option value="Assigned" >Assigned</option> <option value="Researching" >Researching</option> <option value="Work In Progress" >Work In Progress</option> <option value="Pending" selected="selected" >Pending</option> <option value="Resolved" >Resolved</option> </select> <span>Pending</span> </div> </td> </tr> <tr id="pending_reason_row" style=""> <td colspan="2"> <label id="pending_reason_label">Pending Reason</label><br/> <div class="dynamic_select_holder"> <select name="pending_reason" id="pending_reason"> <option value=""/></option> <option value="Catalog Push" selected="selected"/>Catalog Push</option> </select> <span>Catalog Push</span> </div> </td>
function() { if (this.value == "Pending") { $('#pending_reason_row').show(); } else { $('#pending_reason_row').hide(); } if (this.value == "Resolved" || this.value == "Closed") { $('#time_spent_row').show(); } else { $('#time_spent_row').hide(); } if (this.value == "Resolved" || this.value == "Closed") { $('#closure_code_row').show(); $('#root_cause_row').show(); $('#root_cause_details_row').show(); $('#resolution_row').show(); } else if (this.value == "Pending") { $('#root_cause_row').show(); $('#root_cause_details_row').show(); } else { $('#closure_code_row').hide(); $('#root_cause_row').hide(); $('#root_cause_details_row').hide(); $('#resolution_row').hide(); } }
я вижу, что мне каким-то образом нужно вызвать эту функцию, чтобы динамический combobox изменился.
Что я уже пробовал:
мой vb код таков
Me.WebBrowser1.Document.GetElementById("status").SetAttribute("selectedIndex", 4) Me.WebBrowser1.Document.GetElementById("pending_reason").SetAttribute("selectedIndex", 2)
Первый код изменяет статус с присвоенного на ожидающий. Однако второй combobox не появляется
Richard Deeming
Элемент управления .NET WebBrowser по умолчанию застрял в режиме IE7. Похоже, что ваша страница не поддерживает IE7.
Вы могли бы использовать что-то вроде CEFSharp[^], что дает вам встроенную версию Chrome. Или вы можете продолжать использовать селен, который все еще работает .Сетевые приложения.
Member 13610593
только что попробовал cefsharp, и я могу открыть веб-страницу.
И после этого я не могу получить никакой wiki/документации о том, как утилизировать данные. в интернете нет никакой информации о том, как даже нажать кнопку в chromium. не могли бы вы, пожалуйста, направить меня к каким-либо примерам/документам. evalscript/execscript, по-видимому, поддерживает только javascript. но я не могу понять, как получить доступ к html-элементам, таким как
Me.WebBrowser1.Document.GetElementById("status").SetAttribute("selectedIndex", 4)
в хроме.
Richard Deeming
Интеграция JavaScript[^] кажется, это хорошее место для начала.
Прямой доступ к DOM кажется довольно сложным: Посещение дома с помощью CefGlue[^]