2016-07-25 4 views
1

Error У меня есть ниже кодвыбрать элемент из панели навигации для веб-селеном драйвера хром

<a class="mynavlink" href="#"><i class="glyphicon icon-list"></i> Accounts</a> 
<ul style="list-style-type: none;z-index:100;"> 
<li><a class="mynavlink" href="/user"><i class="glyphicon icon-user"></i> Users</a></li>     
<li><a class="mynavlink" href="/groups"><i class="glyphicon icon-group"></i> Groups</a></li>     
<li><a class="mynavlink" href="/user/profile"><i class="glyphicon icon-user"></i> My Profile</a></li> 
</ul> 

Существует mynavlink класс Navbar. Учетная запись - это заголовок и три варианта: Пользователь, группа, Myprofile после наведения курсора на учетную запись.

Я хочу нажать на пользователя. Поэтому я хочу найти точный элемент для нажатия на User. Пожалуйста, предложите.

ответ

1

Вы должны выполнить первую MouseOver на Accounts ссылки затем нажать на пункте меню, как показано ниже: -

WebDriverWait wait = new WebDriverWait(driver, 10); 
Actions builder = new Actions(driver); 

WebElement accounts = wait.until(ExpectedConditions.visibilityOfElementLocated(By.partialLinkText("Accounts"))); 
builder.mouse.mouseMove(((Locatable)accounts).coordinates); //it will perform mouse over on Accounts link  

WebElement users = wait.until(ExpectedConditions.elementToBeClickable(By.partialLinkText("Users")); 
users.click(); //It will click on users link 

Надеется, что это помогает ... :)

+0

Y Не использовать ClickandHold()? – Aishu

+0

@Aishu OP хочет мыши, а 'clickAndHold()' использует для кликов (без выпуска) в текущем местоположении мыши ... :) –

+0

да, но после ClickandHold() мы можем использовать movetoElement() и использовать release() – Aishu

0

Добавить идентификатор в li и затем вызвать этот сценарий с соответствующим таймаута

WebDriverWait(self.driver, timeout).until(
      lambda x: x.find_elements_by_css_id('#user')) 
0

Вот некоторые CSS селекторы:

ul a[href*=user] 
 
a.mynavlink[href*=user] 
 
ul a[href='/user'] 
 
a.mynavlink[href='/user']

Для более селекторов см w3schools

+0

Пробовал селектор CSS, но не повезли .. –

+0

я редактировал один с ul, добавил точку по ошибке. все они являются действительными селекторами. Повторите попытку. – lauda

+0

Я попробовал driver.findElement (By.cssSelector ("a.mynavlink [href * = user]")). Click(); –