Как нажать на тег img в соответствии с HTML, предоставленным через Selenium и Java? - PullRequest
0 голосов
/ 06 сентября 2018

Как нажать на <img> согласно HTML:

<a aria-expanded="false" class="dropdown-toggle" data-toggle="dropdown" href="javascript: void(0);"> <span class="cat__top-bar__avatar" href="javascript:void(0);"> <img src="assets/modules/dummy-assets/common/img/avatars/1.jpg"> </span> </a>

Полный HTML:

<div class="cat__top-bar__right">                        
                    <!----><div class="cat__top-bar__item hidden-sm-down">
                        <div class="dropdown notification-dropdown">
                            <a aria-expanded="false" class="dropdown-toggle" href="javascript: void(0);" title="unread notifications">
                                <i class="menu-notification-icon icmn-Notification menu-left__icon"></i><!----><span class="badge badge-noti badge-danger"></span>
                            </a>
                            <div class="arrow-up notifications" id="drop-down-arrow"></div>
                            <ul aria-labelledby="" class="dropdown-menu dropdown-menu-right" id="drop-down" role="menu">
                                <div class="notification_bar">
                                    <ul>
                                        <li>Notificaitons (1112)</li>
                                        <li><a href="javascript: void(0);">Marks All as Read</a></li>
                                    </ul>
                                </div>
                                <!---->
                                <!---->
                                <div class="cat__top-bar__activity">
                                 
                                </div>
                                <a class="view-all-notify" href="#/portals/super-admin/all-notifications">View All Notificaitons</a>
                            </ul>
                        </div>
                    </div>

                    <div class="cat__top-bar__item">
                        <div class="dropdown cat__top-bar__avatar-dropdown">
                            <a aria-expanded="false" class="dropdown-toggle" data-toggle="dropdown" href="javascript: void(0);">
                                <span class="cat__top-bar__avatar" href="javascript:void(0);">
                                    <img src="assets/modules/dummy-assets/common/img/avatars/1.jpg">
                                </span>
                            </a>
                            <div class="arrow-up profile"></div>
                            
                            <!----><ul class="dropdown-menu dropdown-menu-right" id="profile-drop-down" role="menu">
                                <div class="dropdown-header"><a class="dropdown-item" href="#/portals/super-admin/profile"><i class="dropdown-icon icmn-Profile"></i> Profile</a></div>
                                <div class="dropdown-header"><a class="dropdown-item" href="#/admin"><i class="dropdown-icon icmn-Logout-icon"></i> Logout</a></div>                                
                            </ul>
                       
                        </div>
                    </div>
                </div>

Ответы [ 2 ]

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

используйте этот xpath

driver.findElement(By.xpath("//img[@src='assets/modules/dummy-assets/common/img/avatars/1.jpg']")).click();

также вы можете использовать его с явное ожидание

wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.XPATH, "//img[@src='assets/modules/dummy-assets/common/img/avatars/1.jpg']")))
element.click()
0 голосов
/ 06 сентября 2018

В соответствии с HTML , которым вы поделились, вы не должны вызывать click() для тега <img>, поскольку у него нет события onclick. Вместо этого вы должны вызвать click() для тега <span>. Вы можете использовать одно из следующих решений для выполнения click():

  • cssSelector:

    driver.findElement(By.cssSelector("a.dropdown-toggle > span.cat__top-bar__avatar")).click();
    
  • xpath:

    driver.findElement(By.xpath("//a[@class='dropdown-toggle']/span[@class='cat__top-bar__avatar']")).click();
    
...