【Selenium Python

  • selenium3 python github。

  • 文档:readthedocs版、github版API。貌似后者只是前者的一个章节。


【Selenium Python WebDriver

  • 设置浏览器窗口大小:WebDriver.set_window_size。

  • 获取cookie:WebDriver.get_cookies。

  • 保存当前页面:WebDriver.page_source。

  • 保存当前页面截图:WebDriver.save_screenshot。

  • 元素查找:WebDriver.find_element_by_*

  • 去掉链接的新标签页打开属性(target="_blank"):

aEle = Driver.find_elements_by_tag_name('a'):
Driver.execute_script("arguments[0].removeAttribute('target')", aEle)
  • 切换 iframe:WebDriver.switch_to_frame


【Selenium Python WebElement

  • 文本框清空:WebElement.clear

  • 文本框填写:WebElement.send_keys

  • 按钮(元素)点击:WebElement.click

  • 定位元素坐标:WebElement.location

  • 将元素移动到可视区域并返回移动后的坐标:location_once_scrolled_into_view

  • 获取元素的宽度和高度:WebElement.size

  • 保存元素截图:element.screenshot


【Selenium Python Firefox

  • Firefox驱动:https://github.com/mozilla/geckodriver/releases

  • 禁止firefox加载图片:Disable images in Selenium Python

  • Firefox设置代理:

profile = webdriver.FirefoxProfile()
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.http", ProxyAddr)
profile.set_preference("network.proxy.http_port", ProxyPort)
Driver = webdriver.Firefox(profile)
  • 如果不在环境变量中设置驱动路径,可以用executable_path指定驱动文件路径:

webdriver.Firefox(executable_path=r'E:\webdriver\geckodriver.exe')


【Selenium Python Chrome

  • Chrome驱动:https://sites.google.com/a/chromium.org/chromedriver/home

  • 禁止Chrome加载图片:Python: Disable images in Selenium Google ChromeDriver、selenium设置:浏览器不显示图片

  • 如果不在环境变量(Path)中设置驱动路径,可以用executable_path指定驱动文件路径:

webdriver.Chrome(executable_path=r'E:\webdriver\chromedriver.exe')
  • selenium3、chorme55下的一些配置。

chromeOptions = webdriver.ChromeOptions()
prefs = {}
#禁用图片
prefs['profile.managed_default_content_settings.images'] = 2
#设置下载目录
prefs['download.default_directory'] = 'D:/tmp'
chromeOptions.add_experimental_option("prefs",prefs)
browser = webdriver.Chrome(chrome_options=chromeOptions)


【FAQ】

  • 元素不可点击,报类似这种错误:

selenium.common.exceptions.WebDriverException: Message: unknown error: Element ... is not clickable at point (693, 639). 
Other element would receive the click

可能原因是元素不在可视区域内,可通过滚动页面或去掉上面遮挡的元素再点击。


【相关阅读】

  • selenium之WebDriver

  • Python将浏览器cookies共享给requests库

  • 数据抓取的艺术(一):Selenium+Phantomjs数据抓取环境配置

  • Skip image loading by selenium

  • Selenium WebDriver go to page without waiting for page load

  • Get HTML Source of WebElement in Selenium WebDriver using Python

  • How to print the contents in the “ui”,“li” tags using selenium web driver


*** walker * Updated 2016-12-2 ***