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 mm.Main$2@741827d1
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让灯箱发生并加载其中的图像。

我该如何解决?有人能帮我吗?谢谢!!

4

1 回答 1

1

尝试查看您的堆栈跟踪:

引起:org.openqa.selenium.NoSuchElementException:无法定位元素:{“method”:“id”,“selector”:“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 不起作用,则使用 xpath ......虽然社区通常不推荐这样做,但有时我在运行测试时别无选择。

这可以让您详细了解每种定位器的优缺点http://marakana.com/bookshelf/selenium_tutorial/locators.html以及一些有用的示例。

于 2012-07-30T06:04:07.097 回答