org.openqa.selenium.ElementNotVisibleException: элемент не взаимодействует при попытке щелкнуть элемент через селен - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь нажать кнопку Добавить новый .Но он выдает ошибку, говоря org.openqa.selenium.ElementNotVisibleException: элемент не взаимодействует

<div id="left-tabs-example-pane-metastore" aria-labelledby="left-tabs-example-tab-metastore" role="tabpanel" aria-hidden="false" class="fade tab-pane active in">
   <div class="title col-sm-12"><button class="custom-btn create-new-button" style="float: right;">Add New</button></div>
   <div class="test_table custom-test_table">
      <div class="divTable">
         <div class="divTableHeading">
            <div class="row" style="margin: 0px 3px; border-bottom: 1px solid rgb(221, 221, 221); padding: 15px;">
               <div class="col-sm-3">Name</div>
               <div class="col-sm-3">Created by</div>
               <div class="col-sm-3">Created on</div>
               <div class="col-sm-2">Status</div>
               <div class="col-sm-1">Actions</div>
            </div>
         </div>
         <div class="divTableBody">
            <div class="row" style="margin: 0px 3px; border-bottom: 1px solid rgb(221, 221, 221); padding: 15px;">
               <div class="col-md-3" title="beta-stage-metastore" style="text-overflow: ellipsis; display: inline-block; white-space: nowrap; overflow: hidden;"><a href="#/projects/p-b48010e4-873a-4c4b-9c71-10235dfc8cf0/resources/rds-3e5e6b92-0d59-4485-bf7a-e6965eb7f9f8/details">beta-stage-metastore</a></div>
               <div class="col-md-3">betaorg-admin</div>
               <div class="col-md-3">9th February at 13:17 hrs</div>
               <div class="col-md-2" style="overflow-wrap: break-word;">STOPPED</div>
               <div class="col-sm-1">
                  <span class="dropdown custom_dropdown option-custom_dropdown" style="border-right: none;">
                     <a href="" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><img src="images/more.png"></a>
                     <ul class="dropdown-menu">
                        <li><a>Start</a></li>
                     </ul>
                  </span>
               </div>
            </div>
         </div>
      </div>
   </div>
</div>

Я пробовал следующее:

driver.findElement(By.cssSelector(".custom-btn.create-new-button")).click();

Xpath для Добавить новый *Кнопка 1010 *, созданная с использованием расширения Chrome:

/html/body/div[@id='app']/div[@class='_loading-overlay']/main/div[@class='container-fluid search_table_container']/div[@class='col-md-12 test_tab_wrapper']/div[@class='test_subtab_container']/div[@id='left-tabs-example']/div[@class='col-sm-12'][2]/div[@class='tab-content']/div[@id='left-tabs-example-pane-resources']/div/div[@class='workflowtab_box']/div[@class='row vertical_tab_panel_container']/div[@id='left-tabs-example']/div[@class='col-sm-9']/div[@class='tab-content']/div[@id='left-tabs-example-pane-metastore']/div[@class='title col-sm-12']/button[@class='custom-btn create-new-button']

Ответы [ 4 ]

0 голосов
/ 31 июля 2019

По сути, существует четыре причины, по которым элемент не взаимодействует.

1) Время - время, необходимое для загрузки элементов.Для этого вам нужно проверить, как использовать неявное явное ожидание

2) Проверить, находится ли элемент во фрейме.Для этого переключитесь на фрейм.

3) Неправильный локатор

4) Неправильная реализация отзывчивости.Это по-прежнему связано с № 3).На некоторых сайтах включен только один код для мобильных и веб-версий.Таким образом, элемент будет иметь более одного экземпляра при проверке xxxxx.size.Вам придется искать в списке тот, чей дисплей! = Нет.Затем вы можете добавить положение элемента в ваш xpath или любой другой локатор, который вы используете.Например, xxxx / yyyyy / zzzz [3], если позиция 4 в списке.

Используйте этот код для Java, Допущения a) тип локатора - id b) имя списка - nameOfYourElements

List nameOfYourElements = wd.findElements (By.id ("nameOfYourID"));System.out.println (nameOfYourElements.size ());

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

Попробуйте xpath: driver.findElement(By.xpath("//button[text()='Add New']"));

Пожалуйста, проверьте, находится ли элемент в iframe или нет.Если да, то вам нужно сначала переключиться на iframe, а затем нажать на элемент, для переключения на iframe вы можете обратиться к: Как обрабатывать iframe в Selenium WebDriver с использованием java

Если его нет в iframe, вы можете напрямую щелкнуть по элементу, используя вышеупомянутый xpath.

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

Чтобы щелкнуть элемент с текстом как Добавить новый , можно использовать одно из следующих решений:

  • cssSelector :

    driver.findElement(By.cssSelector("div.tab-content>div#left-tabs-example-pane-metastore>div.title>button.custom-btn create-new-button")).click();
    
  • xpath :

    driver.findElement(By.xpath("//div[@class='tab-content']/div[@id='left-tabs-example-pane-metastore']/div[contains(@class, 'title')]/button[@class='custom-btn.create-new-button' and text()='Add New']")).click();
    
0 голосов
/ 09 февраля 2019

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

    WebDriverWait wait = new WebDriverWait(driver, 40);          
 wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div/button[@class='custom-btn create-new-button']"))).click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...