簡體   English   中英

如何使用Selenium Ruby查找並單擊:javascript鏈接?

[英]How to find and click :javascript links using Selenium Ruby?

我想單擊我使用Selenium Ruby在Firefox中加載的所有:javascript鏈接。

這樣做的正確方法是什么? 我做了這樣的簡單鏈接:

require 'rubygems'
require 'selenium-webdriver'

driver = Selenium::WebDriver.for :firefox
driver.get " http://www.testfire.net "
driver.find_elements(:tag_name, "a").each {|link| link.open}

盡管由於某些錯誤其無法正常工作

Selenium Test.rb:6: private method `open' called for #<Selenium::WebDriver::Element:0x4c155f0> (NoMethodError)
        from Selenium Test.rb:6:in `each'
        from Selenium Test.rb:6

可以使用find_element方法單擊:javascript鏈接嗎? 我在這里面臨的問題是,如果它成功單擊了一個鏈接並打開它,則在進行下一個鏈接時會崩潰。 如何保持這種狀態,直到單擊頁面中的所有鏈接。

我看到腳本有兩個問題:

  1. 您正在嘗試使用Element類的私有方法。 要打開鏈接,您需要所有的element.click,而不是element.open:這應該可行

    driver.find_elements(:tag_name,“ a”)[0] .click

  2. 不要遍歷頁面上的鏈接嘗試單擊它們,而又不能確保您在下一次單擊之前返回初始頁面。 否則,Selenium會失去上下文,並會向您顯示以下消息:

    Selenium :: WebDriver :: Error :: StaleElementReferenceError

試試下面的代碼。我對Ruby不太熟悉,仍然下面的代碼可能對您有幫助

link = driver.find_elements(:tag_name, "a")
i = 0
link.times do
{
link[i].click
driver.navigate.back
i=i+1
link = driver.find_elements(:tag_name, "a")
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM