Как получить доступ к текстовому полю, используя селен, когда основные идентификаторы генерируются автоматически - PullRequest
0 голосов
/ 21 мая 2018

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

Я могу получить элемент, которыйсодержит 123456/1, поэтому я могу найти строку, содержащую нужную мне PartA, но не могу понять, как получить поле ввода текста id = "VALUE.ENTER.SYSTEM.1-XY, которое затем соответствует этой строке. .XY - это числовое значение, которое изменяется в зависимости от количества строк данных и Я не могу предположить, что конкретное значение XY соответствует значению, которое я хочу найти.

Iя не знаю полного @ значения для строки, а значения, перечисленные на странице, ограничены 50 за раз, поэтому, если я не нахожу его один раз, это не означает, что он не появится на более поздней странице.нужно найти 1-ую строку в таблице, извлечь из нее значение, а затем, если у меня есть совпадение в другом кадре данных, если я хочу, я хочу добавить значение в текстовое поле в конце строки, прежде чем перейти кследующий ряд и повторng шаги extract, compare, submit, пока у меня не закончатся строки

Любой надежный способ найти поле ввода текста в python, которое имеет

title =«EnterValueHere»

Мой код

for row in rows:
    RowData = row.find_elements_by_tag_name("input")
    for cell in RowData:
        #Get the ID in question
        if "/" in cell.get_attribute("value"):
            TextToSplit =cell.get_attribute("value")
            PartA,PartB= str(TextToSplit).split("/")
            print(PartA)

Пример таблицы

  <tr>
                <td class="tablesaw-cell-persist">
                  <input type="hidden" name="UNIQUE_ID.SYSTEM.01" value="12">
                  <input type="hidden" name="HEADER_ID.SYSTEM.01" value="">
                  123456/1<input type="hidden" name="CODE.SYSTEM.01" value="123456/1">
                  <span id="ANCHOR.SYSTEM.01"></span>
                </td>
                <td class="tablesaw-cell-persist">
                  BLOGGS JOE<input type="hidden" name="NAME.SYSTEM.01" value="JOE BLOGGS">
                </td>
                <td class="tablesaw-cell-persist">
                  1<input type="hidden" name="ATTEMPT.SYSTEM.01" value="1">
                </td>

                <td>
                  <input type="hidden" name="PRODUCTID.DUM_ASSESSMENT.MENSYS.1-12" value="XY1234+1">
                  <input type="hidden" name="SUS_CODE.DUM_ASSESSMENT.MENSYS.1-12" value="">

                  <div class="sv-input-group-table"><div class="sv-input-group"><span class="sv-input-group-addon"><span class="mme-input-group">

                   N<input type="hidden" name="RTS_CODE.DUM_ASSESSMENT.MENSYS.1-12" value="N">
                  </span></span><input type="text" class="sv-form-control sv-form-control-xs" name="VALUE.ENTER.SYSTEM.1-12" id="VALUE.ENTER.SYSTEM.1-12" title="EnterValueHere" value=""></div></div>
                  <span class="fbk-input-group fbk-select"></span>
                </td>


</tr>
<tr>
                <td class="tablesaw-cell-persist">
                  <input type="hidden" name="UNIQUE_ID.SYSTEM.02" value="12">
                  <input type="hidden" name="HEADER_ID.SYSTEM.02" value="">
                  123456/1<input type="hidden" name="CODE.SYSTEM.02" value="234456/1">
                  <span id="ANCHOR.SYSTEM.02"></span>
                </td>
                <td class="tablesaw-cell-persist">
                  BLOGGS JOE<input type="hidden" name="NAME.SYSTEM.02" value="J BLOGGS">
                </td>
                <td class="tablesaw-cell-persist">
                  1<input type="hidden" name="ATTEMPT.SYSTEM.02" value="1">
                </td>

                <td>
                  <input type="hidden" name="PRODUCTID.DUM_ASSESSMENT.MENSYS.1-02" value="XY1234+2">
                  <input type="hidden" name="SUS_CODE.DUM_ASSESSMENT.MENSYS.1-02" value="">

                  <div class="sv-input-group-table"><div class="sv-input-group"><span class="sv-input-group-addon"><span class="mme-input-group">

                   N<input type="hidden" name="RTS_CODE.DUM_ASSESSMENT.MENSYS.1-02" value="N">
                  </span></span><input type="text" class="sv-form-control sv-form-control-xs" name="VALUE.ENTER.SYSTEM.1-02" id="VALUE.ENTER.SYSTEM.1-02" title="EnterValueHere" value=""></div></div>
                  <span class="fbk-input-group fbk-select"></span>
                </td>


 </tr>
 <tr>
                <td class="tablesaw-cell-persist">
                  <input type="hidden" name="UNIQUE_ID.SYSTEM.03" value="12">
                  <input type="hidden" name="HEADER_ID.SYSTEM.03" value="">
                  123456/1<input type="hidden" name="CODE.SYSTEM.03" value="56789/1">
                  <span id="ANCHOR.SYSTEM.02"></span>
                </td>
                <td class="tablesaw-cell-persist">
                  BLOGGS JOE<input type="hidden" name="NAME.SYSTEM.03" value="JM BLOGGS">
                </td>
                <td class="tablesaw-cell-persist">
                  1<input type="hidden" name="ATTEMPT.SYSTEM.03" value="1">
                </td>

                <td>
                  <input type="hidden" name="PRODUCTID.DUM_ASSESSMENT.MENSYS.1-03" value="XY1234+2">
                  <input type="hidden" name="SUS_CODE.DUM_ASSESSMENT.MENSYS.1-03" value="">

                  <div class="sv-input-group-table"><div class="sv-input-group"><span class="sv-input-group-addon"><span class="mme-input-group">

                   N<input type="hidden" name="RTS_CODE.DUM_ASSESSMENT.MENSYS.1-02" value="N">
                  </span></span><input type="text" class="sv-form-control sv-form-control-xs" name="VALUE.ENTER.SYSTEM.1-03" id="VALUE.ENTER.SYSTEM.1-03" title="EnterValueHere" value=""></div></div>
                  <span class="fbk-input-group fbk-select"></span>
                </td>


 </tr>

1 Ответ

0 голосов
/ 23 мая 2018

Итак, сначала вам нужно получить TR для вашего кода 123456/1.Значение xpath будет

//tr[td//input[@name="CODE.SYSTEM.XY"][@value=123456/1]

. Итак, выше - получить элемент tr, который содержит ваш элемент input.Теперь вы хотите, чтобы вход был расположен внутри этого tr, что можно сделать, расширив XPath до

//tr[td//input[@name="CODE.SYSTEM.XY"][@value=123456/1]/td//input[@title='EnterValueHere']

Обновлено-1: 30 мая 2018

Youследует использовать

//tr[td//input[starts-with(@name, 'CODE.SYSTEM.')][starts-with(@value, '123456/')]/td//input[@title='EnterValueHere']

в первом разделе говорится, что в любом месте документа нужно найти tr, затем условие [] говорит, что в любом месте есть элемент td и дочернее поле ввода, которое в качестве имени атрибута начинается с CODE .... и значение, начинающееся с 12345 / как только tr найден, найдите другой td внутри того, у которого есть ввод с заголовком entervaluehere

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...