selenium

下载chromedriver.exe(最强版)

查看内核 浏览器地址栏中输入:chrome://version/ 得到 Google Chrome 88.0.4324.190 (正式版本) (64 位) 下载chromedriver 进入 https://chromedriver.chromium.org/downloads 查询版本88.0.4324(而非88.0.4324.190) 记录下这个版本号,进入: https://chromedriver.storage.googleapis.com/ ctrl +c 查找:88.0.4324.96 找到系统对应的zip文件,我用的windows10,所以复制:88.0.4324.96/chromedriver_win32.zip 组合为链接: https://chromedriver.storage.googleapis.com/88.0.4324.96/chromedriver_win32.zip 将上面的链接输入到浏览器地址栏就可以下载。 下载得到zip压缩文件,解压缩得到chromedriver.exe。   参考: Steps to download ChromeDriver Follow the st...

chromedriver与chrome版本对应关系

Chrome版本 chromedriver版本 90.0.4430.24 90 89.0.4389.23 89 88.0.4324.96 88 88.0.4324.27 88 87.0.4280.88 87 87.0.4280.87 87 87.0.4280.20 87 86.0.4240.22 86 85.0.4183.87 85 85.0.4183.83 85 85.0.4183.38 85 84.0.4147.30 84 83.0.4103.39 83 83.0.4103.14 83 81.0.4044.138 81 81.0.4044.69 81 81.0.4044.20 81 80.0.3987.106 80 80.0.3987.16 80 79.0.3945.36 79 79.0.3945.16 79 78.0.3904.105 78 78.0.3904.70 78 78.0.3904.11 78 77.0.3865.40 77 77.0.3865.10 77 76.0.3809.126 76 76.0.3809.68 76 76.0.3809.25 76 76.0.3809.12 76 75.0.3770.9...

selenium异常Expected Conditions

Expected Conditions解析 Expected Conditions的使用场景有2种: 直接在断言中使用 与WebDriverWait配合使用,动态等待页面上元素出现或者消失 相关方法: title_is: 判断当前页面的title是否精确等于预期 title_contains: 判断当前页面的title是否包含预期字符串 presence_of_element_located:判断某个元素是否被加到了dom树里,并不代表该元素一定可见 visibility_of_element_located:判断某个元素是否可见.可见代表元素非隐藏,并且元素的宽和高都不等于0 visibility_of:跟上面的方法做一样的事情,只是上面的方法要传入locator,这个方法直接传定位到的element就好了 presence_of_all_elements_located:判断是否至少有1个元素存在于dom树中。举个例子,如果页面上有n个元素的class都是’column-md-3’,那么只要有1个元素存在,这个方法就返回True text_to_be_present_in_element:判断某...

selenium找不到元素?

定位元素过程中经常会遇到找不到元素的问题,出现该问题一般都是以下因素导致: 元素定位方法不对 页面存在iframe或内嵌窗口 页面超时 webdriver 提供了一个 switch_to_frame 方法,可以很轻松的来解决这个问题。 用法: #先找到到 ifrome1(id = f1) browser.switch_to_frame(“f1”) 同样的,如果是内嵌窗口: browser.switch_to_window(“f1”)

Selenium速查表

Python Webdriver Exception速查表 webdriver在使用过程中可能会出现各种异常,我们需要了解该异常并知道如何进行异常处理。 异常 描述 WebDriverException 所有webdriver异常的基类,当有异常且不属于下列异常时抛出 InvalidSwitchToTargetException 下面两个异常的父类,当要switch的目标不存在时抛出 NoSuchFrameException 当你想要用switch_to.frame()切入某个不存在的frame时抛出 NoSuchWindowException 当你想要用switch_to.window()切入某个不存在的window时抛出 NoSuchElementException 元素不存在,一般由find_element与find_elements抛出 NoSuchAttributeException 一般你获取不存在的元素属性时抛出,要注意有些属性在不同浏览器里是有不同的属性名的 StaleElementReferenceException 指定的元素过时了,不在现在的DOM树里了,可能是被删除了或者是页面或iframe刷新了 ...

selenium鼠标事件

鼠标事件一般包括鼠标右键、双击、拖动、移动鼠标到某个元素上等等。 需要引入ActionChains类。 引入方法: from selenium.webdriver.common.action_chains import ActionChains ActionChains 常用方法: perform() 执行所有ActionChains 中存储的行为; context_click() 右击; double_click() 双击; drag_and_drop() 拖动; move_to_element() 鼠标悬停。 鼠标双击示例: #定位到要双击的元素 qqq =driver.find_element_by_xpath(“xxx”) #对定位到的元素执行鼠标双击操作 ActionChains(driver).double_click(qqq).perform() 鼠标拖放示例: #定位元素的原位置 element = driver.find_element_by_name(“source”) #定位元素要移动到的目标位置 target = driver.find_element...