2

我正在使用Selenium Web DriverFire Fox 在Python.

问题是有时对于某些元素,NoSuchElementException即使该元素与我正在搜索的 id 存在,我也会得到。

我正在使用find_element_by_id(id)方法。

我的代码是

d = webdriver.Firefox()

elm5 = d.find_element_by_id("ctl00_bodyContent_tabGroupAdmin")

elm5.click()

该元素的 HTML 是:

<div id="ctl00_bodyContent_tabGroupAdmin" class="tab">
                <div onclick="OpenTab(3); DisableProgressBarDisplay(); return false;">
                    Group Administrators</div>
                <div class="cap_right">
                </div>
            </div>

有没有人遇到过同样的问题?请建议一些解决方法。

谢谢

4

4 回答 4

3

我建议您必须等待元素出现。

看看这个关于如何等待的答案

我们也有这个问题,有时在使用 selenium 时。页面太慢了。

于 2013-04-02T11:10:12.847 回答
0

我对Python一无所知,但是我正在使用java使用selenium Webdriver,我想问题出在bcz可能你没有切换到当前帧。您可以通过向上检查您的 html 内容来检查这一点,您将能够找到当前帧。

在java中,我们曾经这样做是 driver.switchTo().frame(driver.findElement(By.name("officePane")));

你可以在python中检查这个类似的希望它会对你有所帮助。

于 2013-04-02T11:42:04.197 回答
0
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

将这些添加到代码的开头并

WebDriverWait(d, 20).until(EC.presence_of_element_located((By.ID, "ctl00_bodyContent_tabGroupAdmin")))

顺便说一句,您可以在一行中查找并单击元素,如下所示:

d.find_element_by_id("ctl00_bodyContent_tabGroupAdmin").click()

祝你好运,感谢用户为我们教授这个解决方案。

于 2013-09-03T13:34:15.513 回答
0

希望您的问题现在得到解决。但自上周以来,我面临着同样的问题。这是您的问题的以下代码。它会在元素被频繁检测和某些时候未被检测到时,专门检测框架并定位元素。

WebDriver d = new FirefoxDriver();  <-- Intialize your Firefox driver
WebDriverWait  frame = new WebDriverWait(driver, 50); <-- Creating wait object for frame
frame.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.tagName("iframe")));
WebDriverWait wait1 = new WebDriverWait(driver, 50); <-- Creating wait object for element 
wait1.until(ExpectedConditions.elementToBeClickable(find_element_by_id("ctl00_bodyContent_tabGroupAdmin"))).click();

希望这将解决您的问题,如果它没有解决。

于 2014-08-11T07:10:41.543 回答