当我知道另一个值时,如何找到一个值?

时间:2013-01-20 11:00:41

标签: ruby selenium-webdriver

以下是网页内容的一部分:

<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

修改

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

错误已被删除,但未打印该值。

2 个答案:

答案 0 :(得分:0)

这可以通过使用xpath选择器来完成。您可以找到具有特定内容的元素,

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

和前面兄弟的具体内容为,

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

现在,您可以对element2执行任何操作。

我建议你使用带有firebug和xpath检查程序的inspect xpath。

希望它会有所帮助。

答案 1 :(得分: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());
}