发生的情况是我有这个网页:
以下 div
是上面屏幕截图中以青色显示的内容。我圈出了我想要找到的文字:
我尝试过 Xpath 和 CSS。它们都在 Firebug 中工作,并且都将元素很好地定位在这个 float div 中。但是当我运行我的脚本时,我得到了 nosuchelement 异常。
-我怀疑的事情:
- 如你所见,这个div是对另一个网页的调用(由 div 内的整个 html 树)。这可能是原因 Webdriver 下 hell 却找不到任何东西。但我不知道 如何告诉它在这个窗口中查看。
- div 的作用就像一个 float 弹出窗口,使其余部分变灰 背景页。不确定这是否有什么关系,但可能是 也会带来麻烦。
我认为没有必要,但这是我在 Firepath 中使用的 CSS 定位器之一,用于定位 5040 文本。
driver.findElement(By.cssSelector(".feature>tbody>tr>td[width='312']")
所以这里的问题是:如果我的 xpath/css 定位器手动工作但不能使用 WebDriver,我如何在这些 td 中找到此文本?
最佳答案
查看 iframe
元素 - 这是您收到异常的原因。
在查找元素之前,您需要切换到 iframe
:
driver.switchTo().frame("Content")
或者(如果由于 id
中存在空格而无法正常工作):
driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[id$=Content]"));
关于java - Selenium Webdriver - 能够通过 firebug 定位元素,但在 Webdriver 中出现 nosuchelementException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31393669/