2013-01-20 59 views
0

下面是網頁內容的一部分:如何找到一個​​價值,當其他​​vlaue我知道?

<td><a href="/aems/example.com">TEST LTD</a></td> 
<td>SFFFFGG, JHFUJ, Hawaii,</td> 
<td>aaaa</td> 

如果我知道aaaa,反正我能找到的價值TEST LTD?其中TEST LTD可以是任何運行時間值,其中aaaa總是爲我所知。更多<td>可以在上面提到的html內容的部分之前或之後的網頁中。

EDIT

CODE

require "rubygems" 
require "selenium-webdriver" 

driver = Selenium::WebDriver.for :firefox 
driver.get "https://www.example.com" 

element = driver.find_element :name => "username" 
element.send_keys "######" 
element = driver.find_element :name => "password" 
element.send_keys "######" 
element.submit 
element = driver.find_element(:name, "btnHome") 
element.click 
element=driver.find_element(:link, "Suppliers") 
#print element.attribute(:href) 
element.click 
element = driver.find_element :name => "search.locationIdentifier" 
element.send_keys "H00371101" 
element = driver.find_element :name => "btnSearch" 
element.click 

# all_table_data = driver.find_elements(:tag_name, "td") 

# all_table_data.each do |td| 

    # puts td.text 

# end 

element2 = driver.find_elements(:xpath,"//td[text()='H00371101']/preceding-sibling::td[2]") 

puts element2 

錯誤已被移除,但沒有被印刷的值。

+0

我收到錯誤嘗試,看看我**編輯** – DoLoveSky

+0

你能請在這裏發表您的代碼? –

+0

你需要顯示你寫的代碼。沒有它,我們不知道你在做什麼。 –

回答

0

這可以通過使用xpath選擇器來完成。您可以使用特定的內容找到元素,

element1 = driver.findElement(By.xpath("//td[text()='aaaa']")) 

,並與前面的兄弟特定內容,

element2 = driver.findElement(By.xpath("//td[text()='aaaa']/preceding-sibling::td[2]")) 

現在,你可以執行你想在element2上的任何操作。

我想建議你使用螢火蟲和xpath檢查器檢查xpath。

希望它會有所幫助。

+0

你能給我的文檔鏈接?我發現網上沒有這樣的兄弟姐妹的概念。 – DoLoveSky

+0

我沒有得到你的最後一個元素!你能解釋一下嗎?意味着兄弟姐妹的概念! – DoLoveSky

+0

你究竟在找什麼? **之前的兄弟**是xpath表達式,用於從給定元素中選擇前一個兄弟元素。搜索xpath選擇器以瞭解更多... –

0

這裏

你可以用這個XPath

String xpath="//a[@href='/aems/example.com']/../following-sibling::td"; 

int td_size=driver.findElements(By.xpath(xpath)).size(); 

for(int i=1;i<=td_size;i++) 
{ 
    System.out.println(driver.findElement(By.xpath("//a[@href='/aems/example.com']/../following-sibling::td["+i+"]")).getText()); 
} 
相關問題