Перейти к содержимому

Фотография

никак не могу кликнуть на td


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 14

#1 chevyk

chevyk

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 22 января 2011 - 19:26

нужно кликнуть на первую ячейку в таблице, но никак у меня это не получается уже идей никаких в голове нет

генерится скриптом, position: absolute:
<table cellspacing="0" cellpadding="0" class="SortTable" id="QuickStatTable" style="width: 100%;">
<thead>
<tr class="TableHeader">
<th nowrap="nowrap"><div style="cursor: default; color: black;" title="Company Name">Company Name</div></th>
<th nowrap="nowrap"><div style="cursor: default; color: black;" title="Tax ID">Tax ID</div></th>
<th nowrap="nowrap"><div style="cursor: default; color: black;" title="Company Type">Company Type</div></th>
</tr>
</thead>
<tbody><tr onmouseout="this.className='quickTableRow'" onmouseover="this.className='highliteQuickTableRow'" class="quickTableRow" onclick="javascript:setValueFromLBOSearch('counterParty', 'param_counterParty','Supplier Name'); OnModalWindowClick();updatePage(convertToPanelURL(window.location.href),'formDataSet','beginRender_CentCol','counterParty','counterParty')">
<td valign="top">Supplier Name
</td>
<td valign="top">&nbsp;
</td>
<td valign="top">Limited Partnership
</td>
</tr><tr onmouseout="this.className='quickTableRow'" onmouseover="this.className='highliteQuickTableRow'" class="quickTableRow" onclick="javascript:setValueFromLBOSearch('counterParty', 'param_counterParty','Copy of Supplier Name'); OnModalWindowClick();updatePage(convertToPanelURL(window.location.href),'formDataSet','beginRender_CentCol','counterParty','counterParty')">
<td valign="top">Copy of Supplier Name
</td>
<td valign="top">&nbsp;
</td>
<td valign="top">Limited Partnership
</td>
</tr><tr onmouseout="this.className='quickTableRow'" onmouseover="this.className='highliteQuickTableRow'" class="quickTableRow" onclick="javascript:setValueFromLBOSearch('counterParty', 'param_counterParty','Supplier Nsadame'); OnModalWindowClick();updatePage(convertToPanelURL(window.location.href),'formDataSet','beginRender_CentCol','counterParty','counterParty')">
<td valign="top">Supplier Nsadame
</td>
<td valign="top">&nbsp;
</td>
<td valign="top">Joint Venture
</td>
</tr><tr onmouseout="this.className='quickTableRow'" onmouseover="this.className='highliteQuickTableRow'" class="quickTableRow" onclick="javascript:setValueFromLBOSearch('counterParty', 'param_counterParty','asdasdsaName'); OnModalWindowClick();updatePage(convertToPanelURL(window.location.href),'formDataSet','beginRender_CentCol','counterParty','counterParty')">
<td valign="top">asdasdsaName
</td>
<td valign="top">&nbsp;
</td>
<td valign="top">Other
</td>
</tr><tr onmouseout="this.className='quickTableRow'" onmouseover="this.className='highliteQuickTableRow'" class="quickTableRow" onclick="javascript:setValueFromLBOSearch('counterParty', 'param_counterParty','Copy of asdasdsaName'); OnModalWindowClick();updatePage(convertToPanelURL(window.location.href),'formDataSet','beginRender_CentCol','counterParty','counterParty')">
<td valign="top">Copy of asdasdsaName
</td>
<td valign="top">&nbsp;
</td>
<td valign="top">Other
</td>
</tr><tr onmouseout="this.className='quickTableRow'" onmouseover="this.className='highliteQuickTableRow'" class="quickTableRow" onclick="javascript:setValueFromLBOSearch('counterParty', 'param_counterParty','Copy of asdasdsaName'); OnModalWindowClick();updatePage(convertToPanelURL(window.location.href),'formDataSet','beginRender_CentCol','counterParty','counterParty')">
<td valign="top">Copy of asdasdsaName
</td>
<td valign="top">&nbsp;
</td>
<td valign="top">Other
</td>
</tr><tr onmouseout="this.className='quickTableRow'" onmouseover="this.className='highliteQuickTableRow'" class="quickTableRow" onclick="javascript:setValueFromLBOSearch('counterParty', 'param_counterParty','Copy of asdasdsaName'); OnModalWindowClick();updatePage(convertToPanelURL(window.location.href),'formDataSet','beginRender_CentCol','counterParty','counterParty')">
<td valign="top">Copy of asdasdsaName
</td>
<td valign="top">&nbsp;
</td>
<td valign="top">Other
</td>
</tr><tr onmouseout="this.className='quickTableRow'" onmouseover="this.className='highliteQuickTableRow'" class="quickTableRow" onclick="javascript:setValueFromLBOSearch('counterParty', 'param_counterParty','zxcxzczxc'); OnModalWindowClick();updatePage(convertToPanelURL(window.location.href),'formDataSet','beginRender_CentCol','counterParty','counterParty')">
<td valign="top">zxcxzczxc
</td>
<td valign="top">czc
</td>
<td valign="top">Co-op
</td>
</tr><tr onmouseout="this.className='quickTableRow'" onmouseover="this.className='highliteQuickTableRow'" class="quickTableRow" onclick="javascript:setValueFromLBOSearch('counterParty', 'param_counterParty','TestCompanyName'); OnModalWindowClick();updatePage(convertToPanelURL(window.location.href),'formDataSet','beginRender_CentCol','counterParty','counterParty')">
<td valign="top">TestCompanyName
</td>
<td valign="top">&nbsp;
</td>
<td valign="top">LLC
</td>
</tr><tr onmouseout="this.className='quickTableRow'" onmouseover="this.className='highliteQuickTableRow'" class="quickTableRow" onclick="javascript:setValueFromLBOSearch('counterParty', 'param_counterParty','test'); OnModalWindowClick();updatePage(convertToPanelURL(window.location.href),'formDataSet','beginRender_CentCol','counterParty','counterParty')">
<td valign="top">test
</td>
<td valign="top">&nbsp;
</td>
<td valign="top">Limited Partnership
</td>
</tr>
</tbody>

</table>

вот так вот кликаю:
click("(//table[@id='QuickStatTable']//tr[1])[1]/../..//tbody/tr[1]/td[1]");

зы xpath checker нужный td находит
  • 0

#2 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 23 января 2011 - 09:44

Два варианта:

selenium.click ("css=table#QuickStatTable>tbody>tr>td"); // первый вариант, прописаны все пути от id таблицы
selenium.click ("css=tr.quickTableRow>td"); // второй вариант, обращаемся к ячейке по классу

Если не помогут такие локаторы, то придётся поэкспериментировать с различными методами и событиями.
  • 0

#3 chevyk

chevyk

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 23 января 2011 - 21:38

Два варианта:

selenium.click  ("css=table#QuickStatTable>tbody>tr>td"); // первый вариант, прописаны все пути от id таблицы
selenium.click ("css=tr.quickTableRow>td"); // второй вариант, обращаемся к ячейке по классу

Если не помогут такие локаторы, то придётся поэкспериментировать с различными методами и событиями.


я так понял он его просто не увидел:
23:39:05.991 INFO - Command request: isElementPresent[css=table#QuickStatTable>t
body>tr>td, ] on session f2d9385254664f48bd517a849072ff6b
23:39:06.001 INFO - Got result: OK,false on session f2d9385254664f48bd517a849072
ff6b
23:39:06.001 INFO - Command request: isVisible[css=table#QuickStatTable>tbody>tr
>td, ] on session f2d9385254664f48bd517a849072ff6b
23:39:06.011 INFO - Got result: ERROR: Element css=table#QuickStatTable>tbody>tr
>td not found on session f2d9385254664f48bd517a849072ff6b

но я его то вижу! мб можно еще чего нибудь сделать?
  • 0

#4 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 24 января 2011 - 06:40

я так понял он его просто не увидел:

23:39:05.991 INFO - Command request: isElementPresent[css=table#QuickStatTable>t
body>tr>td, ] on session f2d9385254664f48bd517a849072ff6b
23:39:06.001 INFO - Got result: OK,false on session f2d9385254664f48bd517a849072
ff6b
23:39:06.001 INFO - Command request: isVisible[css=table#QuickStatTable>tbody>tr
>td, ] on session f2d9385254664f48bd517a849072ff6b
23:39:06.011 INFO - Got result: ERROR: Element css=table#QuickStatTable>tbody>tr
>td not found on session f2d9385254664f48bd517a849072ff6b

но я его то вижу! мб можно еще чего нибудь сделать?


Вот это уже интересно, никогда с таким не сталкивался... А можно ссылку на страницу? Может там скрипты какие мешаются...
  • 0

#5 contestar

contestar

    Новый участник

  • Members
  • Pip
  • 36 сообщений
  • ФИО:Алексей

Отправлено 24 января 2011 - 09:11

Не совсем уверен, что мой комментарий относится к вашей ситуации, но - у меня была проблема с нажатием на кнопку, которая находилась в таблице. Selenium RC никак не мог её найти - были испробованы всевозможные локаторы и методы. Из англоязычных форумов вычитал о том, что selenium действительно может иметь проблемы с таблицами. Удалось решить проблему только через java.Robot (попробуйте). И второе решение проблемы - использование selenium webdriver.
Успехов.
  • 0

#6 chevyk

chevyk

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 24 января 2011 - 10:24


я так понял он его просто не увидел:

23:39:05.991 INFO - Command request: isElementPresent[css=table#QuickStatTable>t
body>tr>td, ] on session f2d9385254664f48bd517a849072ff6b
23:39:06.001 INFO - Got result: OK,false on session f2d9385254664f48bd517a849072
ff6b
23:39:06.001 INFO - Command request: isVisible[css=table#QuickStatTable>tbody>tr
>td, ] on session f2d9385254664f48bd517a849072ff6b
23:39:06.011 INFO - Got result: ERROR: Element css=table#QuickStatTable>tbody>tr
>td not found on session f2d9385254664f48bd517a849072ff6b

но я его то вижу! мб можно еще чего нибудь сделать?


Вот это уже интересно, никогда с таким не сталкивался... А можно ссылку на страницу? Может там скрипты какие мешаются...


увы ссылку дать не смогу(
  • 0

#7 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 24 января 2011 - 10:33

Кстати, может Selenium просто не дожидается появления такого элемента. Попробуйте так:

selenium.waitForCondition("selenium.isElementPresent(\"css=table#QuickStatTable>tbody>tr>td\")", "60000"); //дожидаемся появления элемента на странице
selenium.click ("css=table#QuickStatTable>tbody>tr>td"); // первый вариант, прописаны все пути от id таблицы
selenium.click ("css=tr.quickTableRow>td"); // второй вариант, обращаемся к ячейке по классу

  • 0

#8 chevyk

chevyk

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 25 января 2011 - 12:59

Кстати, может Selenium просто не дожидается появления такого элемента. Попробуйте так:

selenium.waitForCondition("selenium.isElementPresent(\"css=table#QuickStatTable>tbody>tr>td\")", "60000"); //дожидаемся появления элемента на странице
selenium.click ("css=table#QuickStatTable>tbody>tr>td"); // первый вариант, прописаны все пути от id таблицы
selenium.click ("css=tr.quickTableRow>td"); // второй вариант, обращаемся к ячейке по классу


и так тоже(
  • 0

#9 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 25 января 2011 - 13:08


Кстати, может Selenium просто не дожидается появления такого элемента. Попробуйте так:

selenium.waitForCondition("selenium.isElementPresent(\"css=table#QuickStatTable>tbody>tr>td\")", "60000"); //дожидаемся появления элемента на странице
selenium.click ("css=table#QuickStatTable>tbody>tr>td"); // первый вариант, прописаны все пути от id таблицы
selenium.click ("css=tr.quickTableRow>td"); // второй вариант, обращаемся к ячейке по классу


и так тоже(


Что так тоже? Что за ошибка возникает?
  • 0

#10 chevyk

chevyk

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 25 января 2011 - 13:17



Кстати, может Selenium просто не дожидается появления такого элемента. Попробуйте так:

selenium.waitForCondition("selenium.isElementPresent(\"css=table#QuickStatTable>tbody>tr>td\")", "60000"); //дожидаемся появления элемента на странице
selenium.click ("css=table#QuickStatTable>tbody>tr>td"); // первый вариант, прописаны все пути от id таблицы
selenium.click ("css=tr.quickTableRow>td"); // второй вариант, обращаемся к ячейке по классу


и так тоже(


Что так тоже? Что за ошибка возникает?


говорит что не видит его
  • 0

#11 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 25 января 2011 - 13:25




Кстати, может Selenium просто не дожидается появления такого элемента. Попробуйте так:

selenium.waitForCondition("selenium.isElementPresent(\"css=table#QuickStatTable>tbody>tr>td\")", "60000"); //дожидаемся появления элемента на странице
selenium.click ("css=table#QuickStatTable>tbody>tr>td"); // первый вариант, прописаны все пути от id таблицы
selenium.click ("css=tr.quickTableRow>td"); // второй вариант, обращаемся к ячейке по классу


и так тоже(


Что так тоже? Что за ошибка возникает?


говорит что не видит его


Iframe случаем не присутствует на странице?
Ещё вот так попробуй и скинь лог
selenium.waitForCondition("selenium.isElementPresent(\"css=table#QuickStatTable\")",  "60000");
selenium.clickAt ("css=table#QuickStatTable>tbody>tr>td", "");

  • 0

#12 chevyk

chevyk

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 25 января 2011 - 13:39

FAILED:  Click	css=table#QuickStatTable>tbody>tr>td

	FAILED:  Click	css=table#QuickStatTable>tbody>tr>td



	java.lang.IllegalStateException: Element isn't visible:	css=table#QuickStatTable>tbody>tr>td



FAILED: fullCicle

        Full cicle 'General Contract'

junit.framework.AssertionFailedError: 	FAILED:  Click	css=table#QuickStatTable>tbody>tr>td	java.lang.IllegalStateException: Element isn't visible:	css=table#QuickStatTable>tbody>tr>td


  • 0

#13 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 25 января 2011 - 13:51

1. Ещё раз, iFrame на странице имеется?
2. Попробовать вот так и скинуть лог сервера селениума:

selenium.waitForCondition("selenium.isElementPresent(\"css=table#QuickStatTable\")",  "60000");
selenium.clickAt ("css=table#QuickStatTable", "10,10");

  • 0

#14 Leoxa

Leoxa

    Новый участник

  • Members
  • Pip
  • 59 сообщений
  • ФИО:Алексей

Отправлено 25 января 2011 - 13:57

я так понял он его просто не увидел:

23:39:05.991 INFO - Command request: isElementPresent[css=table#QuickStatTable>t
body>tr>td, ] on session f2d9385254664f48bd517a849072ff6b
23:39:06.001 INFO - Got result: OK,false on session f2d9385254664f48bd517a849072
ff6b
23:39:06.001 INFO - Command request: isVisible[css=table#QuickStatTable>tbody>tr
>td, ] on session f2d9385254664f48bd517a849072ff6b
23:39:06.011 INFO - Got result: ERROR: Element css=table#QuickStatTable>tbody>tr
>td not found on session f2d9385254664f48bd517a849072ff6b

но я его то вижу! мб можно еще чего нибудь сделать?


попробуйте сделать скриншоты средствами самого селениума, чтобы увидеть страницу "глазами" селениума.
возможно что-то обнаружится.


selenium.clickAt ("css=table#QuickStatTable", "10,10");

update:
кстати уже подсказали. :)
попробуйте вместо .click(locator) использовать .clickAt(locator,"0,0") - клик по координатам. вероятно в ячейке просто текст, который не умеет ничего возвращать методу click, и поэтому selenium генерирует ошибку. а метод clickAt не ждет ответа. :)
  • 0

#15 KaZiK

KaZiK

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Казимирчик Владимир

Отправлено 31 января 2011 - 10:55

Попробуй на локаторе вызвать ивент с помошью selenium.fireEvent(locator, "onclick");
Он вызовет событие на нужном локаторе.
Как альтернатива - скомбинируй mouseOver, mouseDown, mouseUp действия.
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных