Ошибка Selenium Нет подписи метода: org.openqa.selenium.chrome.ChromeDriver.find_element_by_class_name () применима для аргумента - PullRequest
0 голосов
/ 05 февраля 2019

Я хотел бы найти свой TextField в селене, но я не знаю, как именно (я впервые использую селен).

Я попробовал следующий вариант, чтобы попробовать, но ничего не получилось

  1. driver.find_element_by_name(Token).send_keys(abcdefghijklm)

  2. driver.find_element_by_class_name('form-control.ng-untouched.ng-pristine.ng-valid').send_keys("asbfsbgkf")

  3. driver.find_element_by_cssSelector("input.form-control ng-untouched ng-pristine ng-valid[placeholder='Token string']")

  4. driver.findElementByCSSSelector("input.form-control ng-untouched ng-pristine ng-valid[placeholder='Token string']")

  5. driver.find_element_by_xpath("//input[@class='form-control ng-untouched ng-pristine ng-valid'][@type='text']").send_keys("asbfsbgkf")

Кто-то, пожалуйста, помогите мне здесь.Я был бы очень признателен.

Вот HTML-код: (выделен тот, который мне нужен для поиска - ввод "Второе значение")

`

<html lang="en" class="gr__xx_xx_xx_xx_xx_xx_xx">
<body data-gr-c-s-loaded="true"><!--  <g:savetophone id="savetomobile_tag" --><!--  onsuccess="successHandler"--><!--onfailure="failureHandler" size="small" theme="light" ></g:savetomobile>--><app-root _nghost-c0="" ng-version="4.4.6"><div _ngcontent-c0="" class="container-fluid">
  <nav _ngcontent-c0="" class="navbar navbar-expand-lg navbar-light bg-light">
    <button _ngcontent-c0="" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation" class="navbar-toggler" data-target="#navbarSupportedContent" data-toggle="collapse" type="button">
          <span _ngcontent-c0="" class="navbar-toggler-icon"></span>
        </button>
    <div _ngcontent-c0="" class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul _ngcontent-c0="" class="navbar-nav mr-auto">
        <li _ngcontent-c0="" class="nav-item active">
          POC Tester
        </li>
      </ul>
    </div>
  </nav>
  <div _ngcontent-c0="" class="row">
    <div _ngcontent-c0="" class="col-12">
      <app-user-input _ngcontent-c0=""><div>
  <div class="jumbotron">
    <h3>Please provide the following information</h3>
    <hr class="my-4">
    <div>
    </div>
    
    <div class="input-group-mt-2">
      <span class="input-group-btn">
              <div class="d-inline-block dropdown" ngbdropdown="">
        <button aria-haspopup="true" class="btn btn-outline-primary dropdown-toggle" id="dropdownBasic1" ngbdropdowntoggle="" aria-expanded="false">environment</button>
        <div aria-labelledby="dropdownBasic1" ngbdropdownmenu="" class="dropdown-menu">
          <!----><button class="dropdown-item">status</button><button class="dropdown-item">status</button>
        </div>
      </div>
        
      </span>
      <input aria-describedby="basic-addon1" aria-label="URL" class="form-control ng-untouched ng-pristine ng-valid" placeholder="https://something.something.com" type="text">
    </div>
    
    <div class="input-group-mt-2">
      <span class="input-group-btn">
              <div class="d-inline-block dropdown" ngbdropdown="">
        <button aria-haspopup="true" class="btn btn-outline-primary dropdown-toggle" id="dropdownBasic1" ngbdropdowntoggle="" aria-expanded="false">Enjoy button</button>
        <div aria-labelledby="dropdownBasic1" ngbdropdownmenu="" class="dropdown-menu">
          <!----><button class="dropdown-item">Enjoy button</button><button class="dropdown-item">Offers &amp; Notifications</button>
        </div>
      </div>
        
      </span>
      <input aria-describedby="basic-addon1" aria-label="URL" class="form-control ng-untouched ng-pristine ng-valid" placeholder="https://something.somewhere.com" type="text">
    </div>
    <div class="input-group mt-2">
      <span class="input-group-btn">
        <button class="btn  btn-secondary" type="button">First value</button>
      </span>
      <input aria-describedby="basic-addon1" aria-label="URL" class="form-control ng-untouched ng-pristine ng-valid" placeholder="test value" type="text">
    </div>
    <div class="input-group mt-2">
      <span class="input-group-btn">
        <button class="btn  btn-secondary" type="button">Second Value</button>
      </span>
      **<input aria-describedby="basic-addon1" aria-label="URL" class="form-control ng-untouched ng-pristine ng-valid" placeholder="user value" type="text">**
    </div>
    
    
    <div class="input-group mt-2">
      <span class="input-group-btn">
        <button class="btn  btn-secondary" type="button">third value</button>
      </span>
      <input aria-describedby="basic-addon1" aria-label="URL" class="form-control ng-untouched ng-pristine ng-valid" placeholder="test user" type="text">
    </div>
    <div class="mt-2">
      <button class="btn btn-primary">Generate value</button>
    </div>
    <!----><div class="mt-4">
      press:
      
      
      <div id="location">
      </div>
    </div>
    <div class="mt-2">
      <span></span>
    </div>
    <ngb-progressbar type="success">
    <div class="progress">
      <div aria-valuemin="0" role="progress" class="progress bg-success" aria-valuenow="0" aria-valuemax="100" style="width: 0%;">
        <!---->
      </div>
    </div>
  </ngb-progressbar>
  </div>
  
  <div class="mt-5">
    <p>content:</p>
    <textarea class="form-control ng-untouched ng-pristine ng-valid" rows="20"></textarea>
  </div>
</div>
</app-user-input>
    </div>
  </div>
</div></app-root><script type="text/javascript" src="inline.0c00000000000000ca85.bundle.js"></script><script type="text/javascript" src="000000000000000015b.bundle.js"></script><script type="text/javascript" src="scripts.0000000000000fc0000.bundle.js"></script><script type="text/javascript" src="vendor.00000000fgf000000gdf.bundle.js"></script><script type="text/javascript" src="main.cf3000000000000eb000a.bundle.js"></script></body></html>

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Похоже, что все поля ввода имеют одинаковое имя класса. Так что, чтобы сделать его уникальным, попробуйте это.

driver.find_element_by_xpath("(//input[@class='form-control ng-untouched ng-pristine ng-valid'])[n]").send_keys("value")

where n=1,2,3...n

PS n = 1 для первого элемента. Пожалуйста, дайте мне знать, если это поможет.

0 голосов
/ 05 февраля 2019

Ваши xpaths возвращали списки в большинстве случаев.Поскольку мы знаем, что ищем второй элемент ввода, мы можем просто взять второй результат из списка со следующим кодом:

second_input_xpath = "//div[@class='input-group-mt-2'][2]//input"
driver.find_element_by_xpath(second_input_xpath ).send_keys("asbfsbgkf")

Что касается основной ошибки в заголовке, то похоже, что вы этого не сделалиправильно инициализировал ваш веб-драйвер Chrome.Я бы предложил посмотреть здесь на документы по селену.

...