2017-01-12 7 views
-2

Ссылка, которую я пытаюсь щелкнуть, вообще не распознается. Инструменты разработчика в хроме показывает мне ссылку, как в структуре ниже:Щелчок по текстовой ссылке - Использование Selenium

<main 
    <div 
    <ifreame 
    #document 
     <html 
     <body 
      <form 
      <div 
       ::before 
        <a href=wizard_view.do? sys_action=sysverb_wizard_ans&WIZARD:action=follow&wiz_referring_url=&wiz_collection_key=&wiz_collectionID=&wiz_collection=&wiz_collection_related_field=&wiz_view=&wiz_action=sysverb_new&sys_id=ea7d96126f92a100f3ae60526e3ee4e0&sysparm_query=active=true&sysparm_target=&sys_target=change_ddfdff>Standard (from Template) 

</a> 
::after 
</div> 
    .... 

Как определить и нажмите на эту конкретную текстовую ссылку я попытался селектор CSS, XPATH т.д., но не работает

anchors = dd.findElements(By.linkText(Standard (from Template)));  

anchors2 =   dd.findElements(By.cssSelector(a[href*='ea7d96126f92a100f3ae60526e3ee4e0']))); 

Также есть 10 разделов div с таким же именем класса, каждый из которых является текстовой ссылкой. Я хочу, чтобы нажать на них (см выше)

+0

thats invalid html? – Liam

+1

у вас есть ошибочный iframe .. – Liam

+0

Не уверен, но похоже, что вы можете попробовать с 'sys_action' вместо href? Во втором селектор! Например: a [sys_action * = 'ea7d96126f92a100f3ae60526e3ee4e0'] –

ответ

3

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

driver.SwitchTo().Frame(driver.FindElement(By.Id("_the_frame_id"))) 
+1

Вы пропустили одну закрывающую скобку – Andersson

+0

Также вам может потребоваться добавить код для случая, когда нет 'id' /' name' установлен в 'iframe' (довольно распространенный случай) – Andersson

+1

После изменения фрейма Frame to frame и переключения на switch и FindElement на findElement в вашей строке кода он отлично работал. Благодаря тонну. –

0

Переключения кадров в качестве решить мою проблему. Но на следующей странице также есть одна и та же freme (id/name), и я не могу идентифицировать текстовое поле ввода, даже если я уже переключился на фрейм.

enter image description here

Я получаю «NoSuchElementException», когда:

driver.switchTo().frame(driver.findElement(By.id("gsft_main"))); 
     WebElement stdFromTemplate = driver.findElement(By.linkText("Standard (from Template)")); 

stdFromTemplate.click(); 
WebElement stTemplate = driver.findElement(By.id("cced8819db987e08dee9f7b31d961989_text")); 

Эта последняя строка (которая представляет собой новую страницу теперь после нажатия на ссылку, что я был упоминанием в первоначальный вопрос) линии дают me 'NoSuchElementFoundException'