2016-04-27 92 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在这两种情况下。 –