1

我正在尝试运行一个简单的测试来导航到一个站点并尝试使用 twitter 向该站点注册。出于某种原因,当我单击 twitter 按钮并弹出登录窗口时,测试就停止了。在搜索 google、selenium 用户组或 stackoverflow 时,我一直找不到任何东西(至少到目前为止)。我想知道是否有其他人遇到过类似的问题,或者我是否遗漏了一些非常简单的东西。提前致谢。代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re

class TwReg(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.base_url = "sitename"
        self.verificationErrors = []

    def test_tw_reg(self):
        driver = self.driver
        driver.get(self.base_url + "/")
        driver.find_element_by_id("tw_one_click_btn").click()

    def is_element_present(self, how, what):
        try: self.driver.find_element(by=how, value=what)
        except NoSuchElementException, e: return False
        return True

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()

为了确保我清楚地表达了正在发生的事情。上面的代码应该在 twitter sing in window 弹出后退出,而不是在那个时候挂起。此代码由 Selenium 的 IDE 生成。再次感谢。

4

1 回答 1

1

我根本不知道 python,但看起来你的代码没有告诉 webdriver 切换到弹出窗口。网络驱动程序单击按钮后,它试图在登录页面上而不是在弹出窗口中查找元素“what”。因为登录窗口不再具有焦点,所以它不会触发 NoSuchElementException 而是超时。所以你需要在代码中添加一行,以便在它打开后切换到弹出窗口。

于 2013-05-24T14:27:07.987 回答