2013-06-12 2 views
0

Мне нужно дважды щелкнуть элемент (именуемый пользователем), который находится внутри таблицы. Пробовал с xpath, но я получаю сообщение об ошибке «Невозможно найти элемент». Я также пробовал с className, linkText, tagName. Может ли кто-нибудь угодить этому.Невозможно щелкнуть по кнопке в таблице с помощью webdriver

Вот фрагмент кода HTML

<div id="gridpanel-1064" class="x-panel filesystem-filegrid x-grid-with-row-lines x-border-item x-box-item x-panel-default x-grid" style="right: auto; left: 305px; top: 0px; margin: 0px; width: 1373px; height: 343px;"> 
<div id="gridpanel-1064_header" class="x-panel-header x-docked x-panel-header-default x-docked-top x-panel-header-docked-top x-panel-header-default-docked-top x-layout-fit" style="width: 1373px; right: auto; left: 0px; top: 0px;"> 
<div id="toolbar-1075" class="x-toolbar x-docked x-toolbar-default x-docked-top x-toolbar-docked-top x-toolbar-default-docked-top x-box-layout-ct" style="width: 1373px; right: auto; left: 0px; top: 32px;"> 
<div id="headercontainer-1065" class="x-grid-header-ct x-docked x-grid-header-ct-default x-docked-top x-grid-header-ct-docked-top x-grid-header-ct-default-docked-top x-box-layout-ct" style="border-width: 1px; width: 1373px; right: auto; left: 0px; top: 59px;"> 
<div id="gridpanel-1064-body" class="x-panel-body x-grid-body x-panel-body-default x-layout-fit x-panel-body-default" style="width: 1373px; left: 0px; height: 226px; top: 84px;"> 
    <div id="gridview-1074" class="x-grid-view x-fit-item x-grid-view-default x-unselectable" style="overflow: auto; margin: 0px; width: 1371px; height: 224px;" tabindex="-1"> 
     <table id="gridview-1074-table" class="x-gridview-1074-table x-grid-table" cellspacing="0" cellpadding="0" border="0" tabindex="-1" style="width: 918px;"> 
      <colgroup> 
      <colgroup> 
      <colgroup> 
      <colgroup> 
      <colgroup> 
      <colgroup> 
      <colgroup> 
      <colgroup> 
      <colgroup> 
      <tbody id="gridview-1074-body"> 
       <tr id="gridview-1074-record-ext-record-23" class="x-grid-row x-grid-data-row" tabindex="-1" data-recordindex="0" data-recordid="ext-record-23" data-boundview="gridview-1074"> 
       <tr id="gridview-1074-record-ext-record-24" class="x-grid-row x-grid-row-alt x-grid-data-row" tabindex="-1" data-recordindex="1" data-recordid="ext-record-24" data-boundview="gridview-1074"> 
       <tr id="gridview-1074-record-ext-record-25" class="x-grid-row x-grid-data-row" tabindex="-1" data-recordindex="2" data-recordid="ext-record-25" data-boundview="gridview-1074"> 
       <tr id="gridview-1074-record-ext-record-26" class="x-grid-row x-grid-row-alt x-grid-data-row" tabindex="-1" data-recordindex="3" data-recordid="ext-record-26" data-boundview="gridview-1074"> 
       <tr id="gridview-1074-record-ext-record-27" class="x-grid-row x-grid-data-row" tabindex="-1" data-recordindex="4" data-recordid="ext-record-27" data-boundview="gridview-1074"> 
        <td class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1100 x-grid-cell-first x-unselectable x-grid-cell-special x-grid-cell-row-checker"> 
        <td class="x-grid-cell x-grid-td x-grid-cell-actioncolumn-1066 x-unselectable x-action-col-cell"> 
        <td class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1067 x-unselectable "> 
         <div class="x-grid-cell-inner" style="text-align:left;" unselectable="on">users</div> 
        </td> 
        <td class="x-grid-cell x-grid-td x-grid-cell-actioncolumn-1068 x-unselectable x-action-col-cell"> 
        <td class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1069 x-unselectable "> 
        <td class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1070 x-unselectable "> 
        <td class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1071 x-unselectable "> 
        <td class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1072 x-unselectable "> 
        <td class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1073 x-grid-cell-last x-unselectable "> 
       </tr> 
      </tbody> 
     </table> 
    </div> 
</div> 
+1

Ну, что XPath селектора вы пробовали? Это в IFrame? – Arran

+0

1. Это было утверждение, что я устал, используя XPath WebElement selectbtn1Element = driver.findElement (By.xpath ("// table/tbody/tr [5]/tr [3]/div")); 2. Нет, нет IFrame – user2479333

ответ

0

Ну текущий XPath неправильно:

//table/tbody/tr[5]/tr[3]/div 

Посмотрите на то, что он делает.

Он будет идти в table, в том, что table «s tbody, в пятуюtr (строки) , то эта ошибка, она будет идти в третьегоtr в пределах этого (строк, помните?)

Возьмите это и сравните его с тем, что у вас есть.

Вы хотите, вероятно:

//table/tbody/tr[5]/td[3]/div 

Как внутри, третьегоtd (клетки) в пределах пятого т.р. (строка).

+0

спасибо за исправление :) Я пробовал делать это, но я получаю сообщение об ошибке :-(Не удалось найти элемент: {"method": "xpath", "selector": "// table/tbody/tr [5]/td [3]/div [text() = 'users']"} Продолжительность или таймаут команды: 12 миллисекунд – user2479333

+0

Используя предоставленный HTML-код, он работает для меня. в HTML? Как и в случае, отпустите тест один раз, а затем сравните вывод HTML.Поскольку вы используете позиционные индексы, если изменения позиции будут работать. Вы можете попробовать XPath, который менее полагается на позиции: // таблица // descendant :: div [text() = 'users'] '. Осмотрите страницу с помощью инструментов Chrome Developer, разместите снимок экрана о том, что вы видите. – Arran

+0

Я дал полный xpath от начала html-страницы. Он работает сейчас. – user2479333

0

Это XPath отберет DIV, содержащий текст users чей класс x-grid-cell-inner


XPath

//div[contains(., 'users') and contains(@class, 'x-grid-cell-inner')] 

Находит элемент

<div class="x-grid-cell-inner" style="text-align:left;" unselectable="on">users</div> 

Вам необходимо применять дополнительные отборочные к XPath, если есть несколько дивы с этими атрибутами.

0

Надеется, что это поможет ...

driver.findElement(By.xpath("//table[@id='gridview-1074-table']/tbody/tr[5]/tr[3]/div")).click(); 
+0

идентификатор таблицы меняется каждый раз. Я пробовал с и без указания идентификатора таблицы, но он не работает. – user2479333

+0

Используйте регулярное выражение, используя javascript вместо 1074. Чтобы это не получилось. –

0

Может быть что-то вроде этого:

driver.findElement(By.xpath("//div[contains(string(), 'users')]")); 
+0

Я получаю исключение: «Не удалось найти элемент» – user2479333

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