2016-04-27 93 views
0

我在這裏是新的,甚至到RubySelenium。我試圖點擊以下代碼的網頁上的鏈接:無法點擊鏈接使用鏈接文本/部分鏈接文字使用紅寶石

<a> target="mainFrame" href="dynamic_Utility_Index.htm">Dynamic Utilities</a> 

所以基本上我想點擊這個動態工具。這是我迄今編寫的腳本是:

require 'selenium-webdriver' 
    require 'win32ole' 

    driver = Selenium::WebDriver.for:firefox 
    driver.manage().window().maximize(); 

    driver.navigate.to 'xyz.com' 

    wait = Selenium::WebDriver::Wait.new(:timeout =>10) # seconds 

    #Click on Dynamic Utilities 
    wait.until{driver.find_element(:link_text,'dynamic_Utility_Index.htm').click} 
    puts "Clicked" 

我甚至使用環節,partial_link_text到位LINK_TEXT,但不斷收到以下錯誤

(Unable to locate element: {"method":"link text","selector":"dynamic"}) (Selenium::WebDriver::Error::TimeOutError)

我使用RubySelenium Web driver

+1

您可以檢查此鏈接位於一個iframe裏面?謝謝。 – alecxe

+0

沒有它在iframe中沒有內涵 –

回答

0

您認爲是link textdynamic_Utility_Index.htm)的項目實際上只是href屬性的值。實際鏈接文本是"Dynamic Utilities"。您也可以通過鏈接文本使用xpath定位//a[@href="dynamic_Utility_Index.htm"]而不是搜索:

wait.until{driver.find_element(:xpath,'//a[@href="dynamic_Utility_Index.htm"]').click} 
+0

所以你的意思是像這樣wait.until {driver.find_element(:xpath,'/ html/body/table/tbody/tr [11]/td [2]/a [@ href =「 ),點擊} wait.until {driver.find_element(:xpath,'/]/a [@ href =「dynamic_Utility_Index.htm」]')。click}嘗試這兩個.same錯誤..無法找到元素 –

+0

請勿像'/ html/body/table/tbody/tr [11]/.....'使用絕對'XPaths'' – Andersson

+0

是否wait.until {driver.find_element(:link_text,「動態實用程序「)。click}'作品? – Andersson

0

你有沒有試着用:

wait.until{driver.find_element(:link_text,'DYNAMIC UTLITIES').click} 

?有時我必須使用大寫的文本鏈接。

另一種選擇可能是:

driver.find_element(:xpath, "//a[contains(@target, 'mainFrame')]").click

希望對你有用:d

+0

都嘗試,仍然得到同樣的error..btw感謝您的幫助 –

+0

@JimitShah在: 也許......作爲一個「調試」模式.. ..你可以這樣做: '把driver.find_elements(:LINK_TEXT, 'DYNAMIC UTLITIES')。length' 或 '把driver.find_elements(:XPath的「//一個[含有(@target, 'mainFrame')]「)。length' 看看我們是否至少能夠到達元素。如果這給我們至少1個元素,我們可以通過點擊或文本方法開始「播放」。 –

+0

我在我的代碼中都試過。 它的打印0在這兩種情況下。 –