XPath / CSS / Locators для выбора опции переключателя заголовка с помощью WebDriver

Есть ли какой-нибудь код для нижеприведенных проблем? Я не могу написать правильный XPath или CSS, чтобы выбрать заголовок «MRS» для приведенного ниже кода. Я использую приведенный ниже код, но не могу его выполнить.

driver.findElement (By.xpath ("// div [@ value = 'MRS']")). click ();

<div class = "question-controls clearfix">
   <div class = "question-group ">
        <label class = "off">Mr</label>
        <input type = "radio" name = "title" value = "MR" class = "ui-helper-hidden-accessible">

        <label class = "off">Mrs</label>
        <input type = "radio" name = "title" value = "MRS" class = "ui-helper-hidden-accessible">

        <label class = "on">Miss</label>
        <input type = "radio" name = "title" value = "MISS" class = "ui-helper-hidden-accessible">

        <label class = "off">Ms</label>
        <input type = "radio" name = "title" value = "MS" class = "ui-helper-hidden-accessible">

        <label class = "off">Dr</label>
        <input type = "radio" name = "title" value = "DR" class = "ui-helper-hidden-accessible">    
        <label class = "off">Rev</label>
        <input type = "radio" name = "title" value = "REV" class = "ui-helper-hidden-accessible">    
        <input type = "text" maxlength = "20" style = "display:none" name = "otherTitle" value = "" placeholder = "Other title:" id = "otherTitle">
    </div>          
</div>

ссылка для справки:

https://sqa.stackexchange.com/q/36421/35535

Я сумасшедший или ваша "ссылка для справки" - это ссылка на ваш вопрос? Нам нужна ссылка на страницу.

pguardiario 21.11.2018 13:01

ссылка на страницу - compare-int-01.underwriteme.co.uk/customer/first

Arjun 21.11.2018 13:03

- Я вижу страницу входа без радио.

pguardiario 21.11.2018 13:05

Необходимо войти в систему, чтобы увидеть эту страницу, и мне не разрешено предоставлять данные для входа

Arjun 21.11.2018 13:07

Тогда вы, наверное, не получите хорошего ответа, извините.

pguardiario 21.11.2018 13:27

в любом случае, спасибо за помощь.

Arjun 21.11.2018 13:28
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
130
2

Ответы 2

//div[@class='question-group']/input[@type='radio'][@value='MRS']   

Если указанный выше xpath не работает, проверьте, находится ли этот элемент, который вы пытаетесь найти, внутри любого iframe, в этом случае сначала переключитесь на фрейм, а затем попробуйте выбрать этот переключатель.

driver.switchTo().frame(driver.findElement(By.xpath("iframexpath here")));

попробовал ваш код и все еще получаю сообщение об ошибке. обратите внимание, что этот элемент отсутствует в каком-либо iframe. driver.findElement (By.xpath ("// div [@ class = 'question-group'] / ‌ input [@ type = 'radio'] ‌ [@ value = 'MRS']")). cl‌ ick ();

Arjun 21.11.2018 12:15

Список <WebElement> radioList = driver.findElements (By.xpath ("// div [@ class = 'question-group'‌] / input [@ type =' radio‌ ']")); for (int i = 0; i <radioList.size (); i ++) {if (driver.radioList.getElement (i) .getAttribute (value) .equals‌ IgnoreCase ("MRS")) {driver.getElement (i) .click ()}} используйте приведенный выше код и дайте мне знать, работает ли он, пожалуйста

Kaushik 21.11.2018 12:30

Я использовал приведенный выше код, но я не могу выполнить код из-за radioList в цикле if. сообщение RadioList не может быть разрешено или отсутствует в поле. используемый ниже код List <WebElement> radioList = driver.findElements (By.xpath ("// div [@ class = 'question-group'‌] / input [@ type =' radio‌ ']")); for (int i = 0; i <radioList.size (); i ++) {if (driver.radioList.getElement (i) .getAttribute ("значение"). e‌ qualsIgnoreCase ("MRS‌")) {driver.findElement (i) .click (); }}

Arjun 21.11.2018 13:00

извините, есть исправление, List <WebElement> radioList = driver.findElements (By.xpath ("// div [@ class = 'question-group'‌] / input [@ type =' radio‌ ']")) ; for (int i = 0; i <radioList.size (); i ++) {if (radioList.getElement (i) .getAttribute ("value"). equalsIgnor‌ eCase ("MRS")) {radioList.getElement (i) .click (); }} удалить драйвер. от, если {} он будет работать

Kaushik 21.11.2018 13:07

невозможно выполнить должное время getElement в цикле if. Сообщение, когда я нажимаю на него: метод getElement (int) не определен для типа List <WebElement. он говорит мне добавить слепок в радиолист

Arjun 21.11.2018 13:14

используйте get (i) вместо getElement ()

Kaushik 21.11.2018 13:21

последняя ошибка в driver.findElement (i) .click (); }} сообщение об ошибке: метод findElement (By) в типе WebDriver не применим для аргументов (int)

Arjun 21.11.2018 13:25

замените driver.findElement (). click () на radioList.get (i) .click ();

Kaushik 21.11.2018 13:31

Пробовал код ниже, и не удается выбрать заголовок MRS List <WebElement> radioList = driver.findElements (By.xpath ("// di‌ v [@ class = 'question-g‌ roup'] / input [@ type = '‌ радио'] ")); for (int i = 0; i <radioList.size (); i ++) {if (radioList.get (i) .getAttribute ("value"). equalsIgnoreCas‌ e ("MRS")) {radioList.get (i) .click (); }}

Arjun 21.11.2018 14:45

В соответствии с HTML, который вы предоставили для вызова click() в элементе, связанном с заголовком Г-ЖА, поскольку элемент имеет класс clearfix, вам необходимо вызвать WebDriverWait для желаемого элемент, чтобы быть интерактивным, и вы можете использовать следующее решение:

  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='question-controls clearfix']/div[@class='question-group']//label[contains(.,'Mrs')]//following::input[1]"))).click();
    

Можете ли вы обновить основной вопрос точным значением журналы трассировки ошибок для дальнейшего анализа?

DebanjanB 21.11.2018 14:48

Другие вопросы по теме