2012-07-29 40 views
1

我試圖通過點擊一個href加載圖像的屬性。我看到,當我點擊鏈接時,它會在所有元素內部加載一個div的頂部。如何獲取從插件像燈箱加載元素的屬性

所以我嘗試是:

js.executeScript("showModal(1,2,'"+nv+"',0);"); 
WebElement im =(new WebDriverWait(d, 10)) 
.until(new ExpectedCondition<WebElement>(){ 
@Override 
    public WebElement apply(WebDriver d) { 
     return d.findElement(By.id("imgView")); 
    }}); 

System.out.println(im.findElement(By.tagName("img")).getAttribute("src")); 

但我檢索:

Exception in thread "main" org.openqa.selenium.TimeoutException: Timed out after 10 seconds waiting for [email protected] 
Build info: version: '2.21.0', revision: '16552', time: '2012-04-11 19:08:38' 
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.8', java.version: '1.6.0_33' 
Driver info: driver.version: unknown 
    at org.openqa.selenium.support.ui.FluentWait.timeoutException(FluentWait.java:252) 
    at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:221) 
    at mm.Main.main(Main.java:85) 
Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"imgView"} 
Command duration or timeout: 43 milliseconds 

功能showModal讓利給的燈箱happer並加載它裏面的圖像。

我該如何解決?有人能幫我嗎?謝謝!!

+0

1.嘗試使用webdriver的PageSource方法來查找它是否可用。在2-3秒的Thread.sleep後執行此操作。有時xpath工作,而不是其他事情。所以,儘可能嘗試一下。 – iMatoria 2012-07-29 17:42:48

回答

1

試着看一下你的堆棧跟蹤:

產生的原因:org.openqa.selenium.NoSuchElementException:找不到元素:{ 「方法」: 「ID」, 「選擇」: 「imgView」}

Selenium正在執行你的代碼,它只是無法在html中使用id = imgView找到你的元素。通過id查找元素通常比純xpath或css定位器快得多,但是我有經驗,因爲某些原因他們中斷了,然後我必須使用xpath或css。

嘗試通過CSS定位尋找你的元素:我顯然不能看到你的HTML源代碼,但如果你不熟悉編程的CSS定位器試試這個:http://sauceio.com/index.php/2010/01/selenium-totw-css-selectors-in-selenium-demystified/

如果CSS does not工作,然後與XPath去......雖然這通常不是社區推薦的,但有時我在運行測試時沒有選擇。

這可以給你每種類型的定位器http://marakana.com/bookshelf/selenium_tutorial/locators.html的優點和缺點的細分,以及一些有用的例子。