Почему Selenium не может читать тексты выпадающего списка, хотя они существуют в HTML. (С#, VS2019, Селен)

Я пытаюсь сделать автоматический инструмент для управления веб-страницей. Я использую C#, Visual Studio 2019, Selenium и Windows 10.

Однако, когда я попытался выбрать значение из раскрывающегося списка, я не могу прочитать его тексты. Ниже приведен мой код, HTML и результат.

!Код!

 _driverSerivce = ChromeDriverService.CreateDefaultService();
 _driverSerivce.HideCommandPromptWindow = true;
 _options = new ChromeOptions();
 ((ChromeOptions)_options).AddArgument("no-sandbox");
 _driver = new ChromeDriver((ChromeDriverService)_driverSerivce, (ChromeOptions)_options);

 wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(30));
 string URL = "Website";  // 
_driver.Navigate().GoToUrl(URL);

// I get the keyword below from HTML.
string Keyword = "erfassenForm:erfassenForm:workflowErfassungSelection:workflowErfassungSelection_input";
IWebElement SelectedElement = wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementExists(By.Id(Keyword)));

SelectElement oSelection = new SelectElement(SelectedElement);               
foreach (IWebElement element in oSelection.Options)
{
    System.Diagnostics.Debug.WriteLine(element.Text);        // Print Each Value's Text (But null is printed!!!)
    System.Diagnostics.Debug.WriteLine(element.TagName);     // Print Each Value's Tag (Correct tag name is printed.)
}

oSelection.SelectByValue("[21 MMI - H3 ] E / E");    // Select a value from Dropdown.

!Распечатать результат!

вариант

вариант

вариант

вариант

вариант

вариант

вариант

!Сообщение об ошибке от oSelection.SelectByValue([21 MMI - H3 ] E / E)!

OpenQA.Selenium.NoSuchElementException: «Не удается найти параметр со значением: [21 MMI — H3] E / E»

!HTML!

<div class="worflowSelectionDropdown">
    <div id="erfassenForm:erfassenForm:workflowErfassungSelection:workflowErfassungSelection_wrapper" class="select-box   ">
        <div id="erfassenForm:erfassenForm:workflowErfassungSelection:workflowErfassungSelection" class="ui-selectonemenu ui-widget ui-state-default ui-corner-all select closed ">
            <div class="ui-helper-hidden-accessible">
                <input id="erfassenForm:erfassenForm:workflowErfassungSelection:workflowErfassungSelection_focus" name="erfassenForm:erfassenForm:workflowErfassungSelection:workflowErfassungSelection_focus" type="text" autocomplete="off" role="combobox" aria-haspopup="true" aria-expanded="false" aria-autocomplete="list" aria-owns="erfassenForm:erfassenForm:workflowErfassungSelection:workflowErfassungSelection_items" aria-activedescendant="erfassenForm:erfassenForm:workflowErfassungSelection:workflowErfassungSelection_1" aria-describedby="erfassenForm:erfassenForm:workflowErfassungSelection:workflowErfassungSelection_1" aria-disabled="false">
            </div>
            <div class="ui-helper-hidden-accessible">
                <select id="erfassenForm:erfassenForm:workflowErfassungSelection:workflowErfassungSelection_input" name="erfassenForm:erfassenForm:workflowErfassungSelection:workflowErfassungSelection_input" tabindex="-1" onchange="updateComboboxTooltip(PF(&#39;&#39;), &#39;workflowErfassungSelectionPanelTooltip&#39;);   ;">
                    <option value="" selected="selected"></option>
                    <option value="0" selected="selected">[21 I/EE-5 9] E/E</option>
                    <option value="1">[11 MIB-STD MO] E/E</option>
                    <option value="2">[11 MIB-STD AU] E/E</option>
                    <option value="3">[21 MIB-HIGH MO] E/E</option>
                    <option value="4">[21 MIB-HIGH AU] E/E</option>
                    <option value="5">[21 MMI-H3 ] E/E</option>
                </select>
            </div>
            <label id="erfassenForm:erfassenForm:workflowErfassungSelection:workflowErfassungSelection_label" class="ui-selectonemenu-label ui-inputfield ui-corner-all">[21 I/EE-5 9] E/E</label>
            <div class="ui-selectonemenu-trigger ui-state-default ui-corner-right">
                <span class="ui-icon ui-icon-triangle-1-s ui-c"></span>
            </div>
        </div>
    </div>
    <span id="erfassenForm:erfassenForm:workflowErfassungSelection:workflowErfassungSelectionPanelTooltip" class="tooltip right iconTooltip"></span>
</div>

Как вы можете видеть в разделе результатов, с 'element.Text' ничего не печатается и не выделяется. Однако в HTML есть некоторые значения, такие как «[11 MIB — STD MO] E/E».

Не могли бы вы сообщить мне причину? Теперь мне интересно, использовал ли я правильное ключевое слово для выбора раскрывающегося списка. (Я использовал 'erfassenForm:erfassenForm:workflowErfassungSelection:workflowErfassungSelection_input')

Спасибо за Ваш интерес.


person chan hong Park    schedule 13.09.2020    source источник
comment
С обеих сторон - и / в [11 MIB - STD MO] E/E есть место, указанное в коде. удалите это и повторите с помощью byText.   -  person Dilip Meghwal    schedule 14.09.2020
comment
@DilipMeghwal О, ты прав. Но странно то, что я скопировал и вставил ключевое слово из HTML. В любом случае я повторю попытку! Однако знаете ли вы, почему я не мог распечатать тексты для вывода?   -  person chan hong Park    schedule 14.09.2020
comment
Тот же подход работает с Python. Я думаю, вам нужно подождать, пока элемент не загрузится должным образом, а затем продолжить.   -  person Dilip Meghwal    schedule 14.09.2020


Ответы (1)


введите здесь описание изображения

@DilipMeghwal Я попробовал Python, но, как вы можете видеть на картинке выше, тексты были ''. Я думаю, что это основная причина, которую я не знаю, почему ... И я достаточно ждал с помощью функции ожидания Selenium, сна и ручной паузы.

person chan hong Park    schedule 14.09.2020