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

Итак, я пытаюсь автоматизировать процесс загрузки отчетов для одной из моих функций.Проблема, с которой я сталкиваюсь, заключается в том, что у этого конкретного сайта нет имени или идентификатора для полей имени пользователя и пароля.Кто-нибудь имел дело с такой проблемой раньше?

Вот поле имени пользователя:

<input type="text" value="user" placeholder="username@whitehatsec.com" class="form-control" autocomplete="off" style="background-image:
 url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAAXNSR0IArs4c6QAAAUBJREFUOBGVVE2ORUAQLvIS4gwzEysHkHgnkMiEc4zEJXCMNwtWTmDh3UGcYoaFhZUFCzFVnu4wIaiE+vvq6+6qTgthGH6O4/jA7x1OiCAIPwj7CoLgSXDxSjEVzAt9k01CBKdWfsFf/2WNuEwc2YqigKZpK9glAlVVwTTNbQJZlnlCkiTAZnF/mePB2biRdhwHdF2HJEmgaRrwPA+qqoI4jle5/8XkXzrCFoHg+/5ICdpm13UTho7Q9/0WnsfwiL/ouHwHrJgQR8WEwVG+oXpMPaDAkdzvd7AsC8qyhCiKJjiRnCKwbRsMw9hcQ5zv9maSBeu6hjRNYRgGFuKaCNwjkjzPoSiK1d1gDDecQobOBwswzabD/D3Np7AHOIrvNpHmPI+Kc2RZBm3bcp8wuwSIot7QQ0PznoR6wYSK0Xb/AGVLcWwc7Ng3AAAAAElFTkSuQmCC&quot;);
background-repeat: no-repeat; background-attachment: scroll; background-size: 16px 18px; background-position: 98% 50%; cursor: auto;">

Вот поле пароля:

<input type="password" value="pass" placeholder="Enter your password" class="form-control" autocomplete="off" style="background-image:
 url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAAXNSR0IArs4c6QAAAUBJREFUOBGVVE2ORUAQLvIS4gwzEysHkHgnkMiEc4zEJXCMNwtWTmDh3UGcYoaFhZUFCzFVnu4wIaiE+vvq6+6qTgthGH6O4/jA7x1OiCAIPwj7CoLgSXDxSjEVzAt9k01CBKdWfsFf/2WNuEwc2YqigKZpK9glAlVVwTTNbQJZlnlCkiTAZnF/mePB2biRdhwHdF2HJEmgaRrwPA+qqoI4jle5/8XkXzrCFoHg+/5ICdpm13UTho7Q9/0WnsfwiL/ouHwHrJgQR8WEwVG+oXpMPaDAkdzvd7AsC8qyhCiKJjiRnCKwbRsMw9hcQ5zv9maSBeu6hjRNYRgGFuKaCNwjkjzPoSiK1d1gDDecQobOBwswzabD/D3Np7AHOIrvNpHmPI+Kc2RZBm3bcp8wuwSIot7QQ0PznoR6wYSK0Xb/AGVLcWwc7Ng3AAAAAElFTkSuQmCC&quot;);
 background-repeat: no-repeat; background-attachment: scroll; background-size: 16px 18px; background-position: 98% 50%; cursor: auto;">

Ответы [ 2 ]

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

Чтобы отправить последовательность символов в поле Имя пользователя :

  • css_selector:

    driver.find_element_by_css_selector("input.form-control[value='user'][placeholder='username@whitehatsec.com']").send_keys("DarthDobber")
    
  • xpath:

    driver.find_element_by_xpath("//input[@class='form-control' and @value='user'][@placeholder='username@whitehatsec.com']").send_keys("DarthDobber")
    

Чтобы отправить последовательность символов в поле Пароль :

  • css_selector:

    driver.find_element_by_css_selector("input.form-control[value='pass'][placeholder='Enter your password']").send_keys("DarthDobber")
    
  • xpath:

    driver.find_element_by_xpath("//input[@class='form-control' and @value='pass'][@placeholder='Enter your password']").send_keys("DarthDobber")
    
0 голосов
/ 19 декабря 2018

Сценарий наихудшего случая: вы можете использовать атрибуты type и placeholder, чтобы найти элемент.

Xpath

//input[@type='text'][@placeholder='username@whitehatsec.com']
//input[@type='password'][@placeholder='Enter your password']

This also should work
//input[@placeholder='username@whitehatsec.com']
//input[@placeholder='Enter your password']

Селектор CSS

input[type='text'][placeholder='username@whitehatsec.com']
input[type='password'][placeholder='Enter your password']

This also should work
input[placeholder='username@whitehatsec.com']
input[placeholder='Enter your password']

Вполне возможно, что вы пропустили какой-либо родительский элемент, который имеет несколько уникальных идентификаторов, таких как тег form с именем или идентификатором.Будьте в поисках их в HTML.Они могут обеспечить лучшие xpaths.

...