2013-06-12 3 views
0

В моем приложении выход из системы является двухсторонним процессом. Когда вы нажимаете на ссылку «Выход» на главном экране, она открывает всплывающее окно для подтверждения выхода из системы.Всплывающая кнопка выхода

Теперь во всплывающем окне есть две кнопки («Выход» и «Отмена»). Проблема в том, что я не могу нажать на любой из них.

Используя консоль Firebug, я подтвердил, что XPath, который я использую, является правильным. Но при использовании одного и того же Xpath в webdriver он не может найти объект.

Xpath кнопки на всплывающий: // DIV [3]/дела/дела/дела [2]/дела/а/SPAN

код, который я пытаюсь:

IWebElement LogoutButton = WebDriver.FindElement(By.XPath("//div[3]/div/div/div[2]/div/a/span")); 
     LogoutButton.Click(); 

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

веселит

EDIT *

<div id="ext-comp-1084" class="x-window x-layer x-window-default x-closable x-window-closable x-window-default-closable x-popup" tabindex="-1" style="opacity: 1; width: 250px; height: 145px; right: auto; left: 755px; top: 147px; z-index: 19000;"> 
<div id="ext-comp-1084_header" class="x-window-header ext-header ext-header-horizontal x-docked x-unselectable x-window-header-default x-horizontal x-window-header-horizontal x-window-header-default-horizontal x-top x-window-header-top x-window-header-default-top x-docked-top x-window-header-docked-top x-window-header-default-docked-top" style="width: 250px; right: auto; left: 0px; top: 0px;"> 
<div id="ext-comp-1084-body" class="x-window-body x-window-body-default x-closable x-window-body-closable x-window-body-default-closable x-window-body-default x-window-body-default-closable" style="width: 250px; left: 0px; top: 52px; height: 49px;"> 
<div id="toolbar-1086" class="x-toolbar x-docked x-toolbar-default x-docked-bottom x-toolbar-docked-bottom x-toolbar-default-docked-bottom x-box-layout-ct" style="width: 250px; right: auto; left: 0px; top: 101px;"> 
<div id="toolbar-1086-innerCt" class="x-box-inner " role="presentation" style="width: 250px; height: 44px;"> 
<div id="toolbar-1086-targetEl" class="x-box-target" style="width: 250px;"> 
<div id="tbspacer-1087" class="x-toolbar-spacer x-box-item x-toolbar-item x-toolbar-spacer-default" style="right: auto; left: 0px; margin: 0px; width: 50px; top: 22px;"></div> 
<div id="button-1088" class="x-btn green x-exclude x-unselectable x-box-item x-toolbar-item x-btn-default-toolbar-small x-noicon x-btn-noicon x-btn-default-toolbar-small-noicon" style="border-width: 1px; width: 100px; right: auto; left: 50px; margin: 0px; top: 8px;"> 
<div id="button-1088-btnWrap" class="x-btn-wrap" unselectable="on"> 
<a id="button-1088-btnEl" class="x-btn-button" tabindex="0" unselectable="on" hidefocus="on" role="button"> 
<span id="button-1088-btnInnerEl" class="x-btn-inner x-btn-inner-center" unselectable="on">Logout</span> 
<span id="button-1088-btnIconEl" class="x-btn-icon-el " style="" unselectable="on" role="img"></span> 
</a> 
</div> 
</div> 
<div id="button-1089" class="x-btn gray x-exclude x-unselectable x-box-item x-toolbar-item x-btn-default-toolbar-small x-noicon x-btn-noicon x-btn-default-toolbar-small-noicon" style="border-width: 1px; width: 80px; right: auto; left: 160px; margin: 0px; top: 8px;"> 
<div id="button-1089-btnWrap" class="x-btn-wrap" unselectable="on"> 
<a id="button-1089-btnEl" class="x-btn-button" tabindex="0" unselectable="on" hidefocus="on" role="button"> 
<span id="button-1089-btnInnerEl" class="x-btn-inner x-btn-inner-center" unselectable="on">Cancel</span> 
<span id="button-1089-btnIconEl" class="x-btn-icon-el " style="" unselectable="on" role="img"></span> 
</a> 
</div> 
</div> 
</div> 
</div> 
</div> 
</div> 
+0

Вы пробовали ждать элемент, либо неявным, либо явным ожиданием? –

+0

Написал HTML-код ... и да, я попытался поставить 2000 milisecond явное ожидание ... Кроме того, вместо Click() я попытался использовать ClickWhenVisible(); – user2434600

+0

Для ясности попробуйте найти элемент через 'By.linkText (« Выход »)' или 'By.xpath (" // a [text() = 'Logout'] ")'. Можете ли вы найти элемент каким-либо образом или вообще нет? Как всегда, вы пробовали в другом браузере? Неужели это происходит постоянно, каждый раз? Как всегда, 2 секунды может быть недостаточно ... –

ответ

0

1) Сначала сохраните экземпляр главного окна, используя ниже код

String mainWindow = driver.getWindowHandle(); 

2) // код нажмите на ссылку Выход на основном экране

3) затем переключить WebDriver управления всплывающих используя код ниже

for(String childWindow : driver.getWindowHandles()){ 
     driver.switchTo().window(childWindow); 
    } 

4) // код, чтобы нажать на всплывающее окно, («Выход» и «Отмена»).

Смежные вопросы