2013-11-14 162 views
0

我有一個類似的頁面結構:硒點擊動態鏈接

<html> 
    <head/> 
    <frameset> 
     <frame/> 
     <frameset id="id1"> 
      <frame/> 
      <frame id="id2"> 
       <html> 
        <head/> 
        <body class="class1"> 
         <form id="id3"> 
          <input/> 
          <input/> 
          <input/> 
          <input/> 
          <table/> 
          <table/> 
          <table/> 
          <div id="id4"> 
           <div id="id5"> 
            <table id="id6"> 
             <thead/> 
             <tbody> 
              <tr/> 
              <tr/> 
              <tr/> 
              <tr> 
               <td/> 
               <td/> 
               <td> 
                <a href="dynamic link">Text</a> 

我需要點擊動態鏈接上 - 鏈接和位置表裏面的變化,但文本始終是相同的。

我試過使用find_element_by_link_text並且失敗。

使用xpath無法找到表單元素。

謝謝。

回答

2

你需要切換到首先包含<a>元素的框架。您的代碼會是這個樣子:

driver.switch_to_frame('id3') 
driver.find_element_by_link_text('TEXT').click() 

注意,上面的代碼只是一個近似值,因爲您提供的HTML代碼只是一個近似值。特別是,你有一個<frameset>元素作爲另一個<frameset>元素的直接子元素,我認爲這是無效的HTML。如果確實有嵌套的框架集,則需要多次調用switch_to_frame才能沿着框架層級向下導航,直到您的焦點位於包含要查找的元素的文檔的框架上。

2

可以使用先找到在頁面全部標籤: find_elements_by_tag_name

然後在每個迭代一個標籤,並檢查它的文字,因爲文字是永遠不變的

a_tags = driver.find_elements_by_tag_name('a') 
for a in a_tags: 
    if a.text == 'TEXT': 
     a.click() 
+1

鑑於上述HTML,仍然無法工作。被尋找的鏈接位於一個框架內,甚至「find_elements_by_tag_name」也不會在子框架的文檔中找到這些元素。 – JimEvans