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

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

Может ли кто-нибудь подсказать, как с этим можно справиться, чтобы при нажатии второй радиокнопки он не выдавал StaleElementReferenceException* 1005?*

HTML:

<solvup-radio-type _ngcontent-c7="" _nghost-c10=""><div _ngcontent-c10="" class="validation-error ng-untouched ng-pristine ng-invalid">

    <solvup-label _ngcontent-c10="" _nghost-c33=""><label _ngcontent-c33="" class="control-label">
     Have you been able to resolve the issue based on this information? <!----><span _ngcontent-c33="" class="required-mark">*</span> 
</label>
<solvup-tooltip _ngcontent-c33="" _nghost-c36=""><!---->
</solvup-tooltip>
</solvup-label>

  <!----><div _ngcontent-c10="" class="radio">
      <label _ngcontent-c10="">
          <input _ngcontent-c10="" type="radio" id="ts_note_questions" class="ng-untouched ng-pristine ng-invalid">
          Yes, issue is resolved - close case
      </label>

  </div><div _ngcontent-c10="" class="radio">
      <label _ngcontent-c10="">
          <input _ngcontent-c10="" type="radio" id="ts_note_questions" class="ng-untouched ng-pristine ng-invalid">
          No - continue to next step
      </label>

  </div>
</div>
<solvup-hint-text _ngcontent-c10="" _nghost-c34=""><!----><p _ngcontent-c34="" class="help-block"></p>
</solvup-hint-text>
<solvup-validation-messages _ngcontent-c10="" _nghost-c35=""><!---->



<!----><div _ngcontent-c35="" class="form-group">
     <small _ngcontent-c35="" class="err"><i _ngcontent-c35="" aria-hidden="true" class="fa fa-exclamation-triangle"></i>  Please select an option</small>
</div>

</solvup-validation-messages>


</solvup-radio-type>

Селен код:

 @Given("^User fills details in First of Five Troubleshooting  page$")
public void user_fills_details_in_First_of_Five_Troubleshooting_page() throws Throwable {
    Thread.sleep(2000);
    List<WebElement> li = driver.findElements(By.className("radio"));
    Actions ob = new Actions(driver);
    ob.moveToElement(li.get(1));
    ob.click(li.get(1));
    Action action = ob.build();
    action.perform();   
}

Пожалуйста, предложите.

Ответы [ 2 ]

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

Глядя на dom-структуру, вы, возможно, пытаетесь щелкнуть элемент, который может оказаться неправильным.Я думаю, что

List<WebElement> li = driver.findElements(By.Id("ts_note_questions"));
Actions ob = new Actions(driver);
ob.moveToElement(li.get(1));
action.perform();  
li.get(1).click();

будет работать, так как вы пытаетесь нажать на вход вместо div.

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

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

...