2012-05-02 81 views
0

我有一個我想用Watir測試的Facebook應用程序。 問題是我無法訪問其中的一個divs。 位於iframe內。 我可以找到它,甚至說它是可見的。 問題是我不能點擊它(它說它在嘗試時是不可見的)Watir-webdriver:我無法點擊iframe中的可見div

你能幫忙嗎? 我發佈我的代碼與XXX而不是用戶名和Facebook的不同的應用程序。

非常感謝, Elad。

require "watir-webdriver" 

browser = Watir::Browser.new 
browser.goto "http://www.facebook.com" 

sleep(2) 
if browser.text_field(:id => 'pass').exists? 
    browser.text_field(:id => 'email').set 'XXXXXXXXX' 
    browser.text_field(:id => 'pass').set 'ZZZZZZZ' 
    browser.button(:value => 'Log In').click 
end 
sleep(2) 
browser.text_field(:id => 'q').set 'World Of Fun' 
browser.send_keys :enter 
sleep (2) 

browser.goto "https://www.facebook.com/dialog/oauth?client_id=277448022299830&redirect_uri=http%3A//apps.facebook.com/worldoffun/%3Fref%3Dts&canvas=1&fbconnect=0&scope=email,publish_actions" 
sleep (2) 

if browser.button(:name => 'grant_clicked').exists? 
    browser.button(:name => 'grant_clicked').click 
    sleep(3) 
end 
sleep(1) 
+0

我在您提供的代碼中沒有看到任何內容,正如您在標題和問題的文本中提及的那樣嘗試訪問div。我沒有看到任何試圖將iframe指定爲外部容器的東西。你提供的代碼中的哪一步是失敗的? –

+1

http://wiki.openqa.org/display/WTR/Frames –

+0

@Devaffair - 我建議您將代碼示例降低到足以重現問題的程度。把它當作缺陷對待,你會得到更多的幫助。 –

回答

1

那是因爲你正試圖找出元素,不存在在該網頁上,試試這個來代替:

if browser.label(:id => 'grant_clicked').exists? 
    browser.label(:id => 'grant_clicked').click 
    sleep(3) 

我還注意到,該應用程序是在Flash中,所以的Watir不會能夠處理其中的閃存元素,我建議與Watir-Webdriver一起使用AutoItProject Sikuli