Python, драйвер селена Chrome для заполнения формы (изменение идентификаторов элементов) - PullRequest
0 голосов
/ 24 сентября 2018

часть внутренней веб-страницы компании выглядит следующим образом:

enter image description here

Это первая форма веб-страницы.Я хочу ввести цифры в эту форму.

Проблема в том, что идентификатор элемента меняется при обновлении веб-страницы.Поэтому мне надоели driver.find_element_by_xpath и driver.find_element_by_css_selector, он не перехватывает форму каждый раз.

Так что я подумала, может быть, найти строку текста «Клиент №», а затем перейти к следующему элементу, может бытьвыбор.но опять же, идентификатор элемента «Студент №»также меняется.

Есть ли способ поймать форму по тексту "Студент №"?Или есть лучший вариант?спасибо.

часть HTML-кода, как показано ниже:

<div class="labeledField">
        <div class="fieldLabel beanRequiredField">Student No.</div>
        <div class="field"><span id="id16">
    <div>
    <input type="text" class="inputField" value="" name="tabs:r:0:c:0:c:field:c:p:r:0:c:0:c:field:c:frag:component" id="id4e" customid="StudentId" autocomplete="off">
</div>
</span></div>
    </div>

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

Если вы хотите основываться на «Студент №»строка, затем вы можете перейти с помощью селектора XPath:

//div[text()="Student No."]/../div[2]/span/div/input

Так что для Python это будет примерно так:

input = driver.find_element(By.XPATH, '//div[text()="Student No."]/../div[2]/span/div/input')
0 голосов
/ 24 сентября 2018
driver.find_elements_by_class_name('inputField')[0].send_keys('Text')

Работает!

0 голосов
/ 24 сентября 2018

Возможно, это решит вашу проблему:

WebDriverWait wait = new WebDriverWait (driver, 15);wait.until (ExpectedConditions.visibilityOfElementLocated (By.xpath ( "// ввод [@ ид = 'Text3']")));

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