2013-09-27 4 views
2

У меня проблема при попытке щелкнуть по гиперссылке с помощью Selenium Webdriver. Я попытался использовать CssSelector, а также XPath, и ничего не работает. Все, что я пытаюсь сделать, это нажать на текст Google. .Нажмите на гиперссылку, используя Selenium Webdriver

<div class="hello"> 
    <div class="test"> 
    <table class="first first-table"> 
    <tbody> 
    <tr> 
    <td class="second-table"> 
    <a id="dummyID" href="https://www.google.com" target="_blank">Google</a> 
    </td> 
    </tr> 
    </tbody> 
    </table>` 

Я попытался driver.FindElement (By.XPath ("// * [@ ID = 'dummyID']")) Нажмите(); Я также попытался использовать href, чтобы найти ссылку ... почти все. Все время я получаю исключение «неспособность найти элемент». У кого-нибудь есть предложения?

+3

ссылка, содержащаяся в кадре или во встроенном кадре? – Richard

+0

@Richard Это хороший вопрос .. –

+0

Глядя на HTML с помощью Firebug, я не вижу фрейма/iframe. – user1493537

ответ

3

Попробуйте это:

driver.FindElement(By.LinkText("Google")).Click(); 

Посмотрите, чтобы увидеть, если элемент находится в пределах кадра или фрейма. Если да, то вам нужно использовать:

driver.SwitchTo().Frame("frameID"); 
+0

Тогда в чем проблема: 'driver.FindElement (By.XPath (" // * [@ id = 'dummyID'] ")). Click()'? –

+0

Поверьте мне, я тоже это пробовал, и это не сработало. – user1493537

+0

У него нет рамки. По крайней мере, на источнике не отображается какой-либо фрейм. – user1493537

0

Вы можете легко найти по идентификатору:

driver.FindElement(By.id("dummyID")).Click(); 

Или вы можете использовать этот XPath в вашем сценарии:

driver.FindElement(By.XPath("//a[@id='dummyID']")).Click(); 

вы может непосредственно найти элемент по id, это простой и эффективный подход. Надеюсь, вы получите желаемый клик на нем с помощью любого из этих фрагментов кода, оба должны работать одинаково. Конечно, это сработает.

1

Вы можете использовать

driver.FindElement(By.LinkText("Google")).Click(); 
Смежные вопросы