Selenium Xpath - нужен великий потомок соответствующих элементов - PullRequest
0 голосов
/ 12 декабря 2018

я использую ниже xpath, чтобы получить дескриптор больших дочерних элементов:

Xpath:

driver.FindElement(By.XPath("//*[contains(@id,'contact.fieldControl-option-set-select')][2]"))

Dom:

<div id="id-6789e999-a812-4ae0-8c39-a736a4ca4a19-19-contact.fieldControl-option-set-select" data-id="contact.fieldControl-option-set-select-container" role="presentation" class="dm bp hh ab z w flexbox">
    <select id="id-6789e999-a812-4ae0-8c39-a736a4ca4a19-19-preferredcontactmethodcode-preferredcontactmethodcode.fieldControl-option-set-select" aria-label="Preferred Method of Contact" title="Preferred Method of Contact" data-id="preferredcontactmethodcode.fieldControl-option-set-select" describedbyelementid="" class="so sp sq ">
        <option id="id-6789e999-a812-4ae0-8c39-a736a4ca4a19-19-contact.fieldControl-option-set-select" value="-1" class="sn qa ">---</option>
        <option id="id-6789e999-a812-4ae0-8c39-a736a4ca4a19-19-contact.fieldControl-option-set-select" value="1" class="sn qa "">Any</option>
        <option id="id-6789e999-a812-4ae0-8c39-a736a4ca4a19-19-contact.fieldControl-option-set-select" value="2" class="sn qa ">Email</option>
        <option id="id-6789e999-a812-4ae0-8c39-a736a4ca4a19-19-contact.fieldControl-option-set-select" value="3" class="sn qa ">Phone</option>
        <option id="id-6789e999-a812-4ae0-8c39-a736a4ca4a19-19-contact.fieldControl-option-set-select" value="4" class="sn qa ">Fax</option>
        <option id="id-6789e999-a812-4ae0-8c39-a736a4ca4a19-19-contact.fieldControl-option-set-select" value="5" class="sn qa ">Letter</option>
</select>
</div>

Примечание: так как мой xpath совпадает с div / select / options.я просто ищу option элементов здесь.

покажи мне эффективный и простой способ

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Не думаю, что вам следует использовать XPath глубже, чем элемент select.Selenium Wedriver предоставляет слой абстракции над блоками «select» -> «option» и дает вам хороший способ управления параметрами (ref: SelectElement):

using OpenQA.Selenium.Support.UI;

// select the drop down list
var education = driver.FindElement(By.CssSelector("select[title='Preferred Method of Contact']"));

// create select element object 
var selectElement = new SelectElement(education);

ТогдаВы можете использовать selectElement для выбора параметров по тексту, значению или индексу.А также получить все доступные варианты или желаемый.

0 голосов
/ 12 декабря 2018

используйте это для великого ребенка:

driver.FindElement(By.XPath("//*[contains(@id,'contact.fieldControl-option-set-select')]/*/*[contains(@id,'contact.fieldControl-option-set-select')]"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...