课件和 Demo 地址
https://gitee.com/geektime-geekbang/Selenium
如果你无法从 GitHub 正常下载课件及 Demo,请打开下方链接进行下载:
https://gitee.com/geektime-geekbang/Selenium
作者回复: 在代码中,创建了一个 TestCase 类,该类在初始化方法 `__init__` 中创建了一个 Chrome 驱动器对象,打开了百度网站,并最大化窗口。接着,在 `test_id` 方法中,通过该驱动器对象找到搜索框,输入搜索词并点击搜索按钮,最后等待 10 秒后关闭浏览器。 在主程序中,首先创建了一个 TestCase 的实例,然后调用该实例的 `test_id` 方法。 由于在 `__init__` 方法中已经打开了百度网站并最大化了窗口,因此在调用 `test_id` 方法时,又会打开一个新的百度窗口。因此,程序最终会打开两个百度窗口。 为了解决这个问题,可以将打开网站和最大化窗口的代码从 `__init__` 方法中移动到 `test_id` 方法中,或者在初始化方法中加入判断,如果浏览器已经打开,则不再打开。例如: ``` class TestCase(object): def __init__(self): self.driver = None def test_id(self): if not self.driver: self.driver = webdriver.Chrome() self.driver.get('http://www.baidu.com') self.driver.maximize_window() sleep(3) element = self.driver.find_element(By.ID, 'kw').send_keys('yuanshen') sleep(3) self.driver.find_element(By.ID, 'su').click() sleep(10) self.driver.quit() if __name__ == '__main__': case = TestCase() case.test_id() ``` 在修改后的代码中,初始化方法只初始化了一个空的驱动器对象,而在测试方法中,通过判断驱动器对象是否为空来确定是否需要打开浏览器。这样,即使在初始化方法中打开了浏览器,由于在测试方法中判断浏览器对象不为空,因此不会再次打开浏览器
作者回复: 这个根python没有关系是selenium里面的api 查看一下selenium
作者回复: 你用的啥编辑器 pycharm吗?还是其他的 每个编辑器都不太一样
作者回复: 可以把图片校验跳过
作者回复: 看看是否有语法错误 这种情况一般就是语法错误
作者回复: 这样代码更具有通用性
作者回复: driver 没有正确实例化 或者不在这个作用域
作者回复: 浏览器版本和驱动版本不一致
作者回复: 这个是联网问题
作者回复: *loc可以是多个参数