专栏首页python前行者driver匹配元素定位用法大全

driver匹配元素定位用法大全

# -*- coding:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains  # 引入ActionChains鼠标操作类


# create capabilities
capabilities = DesiredCapabilities.INTERNETEXPLORER

# delete platform and version keys
capabilities.pop("platform", None)
capabilities.pop("version", None)

# start an instance of IE
# 本身不支持XPath的大多数版本,写xpath时,尽量从一个具有id的元素开始,这样也可以大大提高执行速度
driver = webdriver.Ie(executable_path=r"C:\Program Files\Internet Explorer\IEDriverServer_x64_3.6.0\IEDriverServer.exe", capabilities=capabilities)
#----------------------------------------------------------------

# 设置窗口最大化
driver.maximize_window()
#----------------------------------------------------------------

#导航
# “navigate().to()” 和 “get()”  的效果是一样的。一个只是很多比其他更容易输入!
driver.get("http://www.abchina.com/cn/")
#----------------------------------------------------------------

#<div id="coolestWidgetEvah">...</div>
#匹配id的两种方法
driver.find_element_by_id("coolestWidgetEvah")
driver.find_element(by=By.ID, value="coolestWidgetEvah")
#----------------------------------------------------------------

# <div class="cheese">
# <span>Gouda</span>
# </div>
#匹配class的两种方法
cheeses = driver.find_elements_by_class_name("cheese")
driver.find_elements(By.CLASS_NAME, "cheese")
#----------------------------------------------------------------

# <iframe src="..."></iframe>
#匹配标签元素的两种方法
frame = driver.find_element_by_tag_name("iframe")
driver.find_element(By.TAG_NAME, "iframe")
#----------------------------------------------------------------

# <input name="cheese" type="text"/>
#匹配name的两种方法
driver.find_element_by_name("cheese")
driver.find_element(By.NAME, "cheese")
#----------------------------------------------------------------

#通过链接文本找到元素匹配的两种方法
# < a href = "http://www.google.com/search?q=cheese" > cheese < / a >
cheese = driver.find_element_by_link_text("cheese")
driver.find_element(By.LINK_TEXT, "cheese")
#----------------------------------------------------------------

# 通过查找部分链接文件匹配元素的两种方法
# <a href="http://www.google.com/search?q=cheese">search for cheese</a>
driver.find_element_by_partial_link_text("cheese")
driver.find_element(By.PARTIAL_LINK_TEXT, "cheese")
#----------------------------------------------------------------

# 通过CSS的定位
# <div id="food">
#
# <span class="dairy">milk</span>
#
# <span class="dairy aged">cheese</span>
#
# </div>
driver.find_element_by_css_selector("#food span.dairy.aged")
driver.find_element(By.CSS_SELECTOR, "#food span.dairy.aged")
#----------------------------------------------------------------

#xpath匹配,标签和属性名称小写
# <input type="text" name="example" />
# <INPUT type="text" name="other" />
driver.find_elements_by_xpath("//input")
driver.find_elements(By.XPATH, "//input")
#----------------------------------------------------------------

#用户输入--填写表单
select = driver.find_element_by_tag_name("select")
allOptions = select.find_elements_by_tag_name("option")
for option in allOptions:
    print "Value is: " + option.get_attribute("value")
    option.click()

from selenium.webdriver.support.ui import Select

select = Select(driver.find_element_by_tag_name("select"))
select.deselect_all()
select.select_by_visible_text("Edam")

#----------------------------------------------------------------
#提交,点击操作
driver.find_element_by_id("submit").click()
driver.find_element_by_xpath('//*[@id="btn_query"]').submit()
driver.find_element_by_id('btn_query').send_keys(Keys.ENTER)
driver.execute_script("var login=document.getElementById('btn_query');login.click();")

element=driver.find_element_by_xpath(menu)
driver.execute_script("arguments[0].click();", element)
#----------------------------------------------------------------

#模拟划过操作
article=driver.find_element_by_xpath('//*[@class="spanone1"]//img')
ActionChains(driver).move_to_element(article).perform()  # 将鼠标移动到这里
ActionChains(driver).context_click(article).perform()

#----------------------------------------------------------------
# 移动Windows和框架(Frames)
# <a href="somewhere.html" target="windowName">Click here to open a new window</a>
#移动到定向窗口
driver.switch_to_window("windowName")
driver.switch_to.window("windowName")

# 通过“window handle”的“switchTo().window()”方法。遍历所有打开的窗口
for handle in driver.window_handles:
    driver.switch_to_window(handle)
    driver.switch_to.window(handle)

#获得当前窗口句柄
nowhandle=driver.current_window_handle
#返回的所有窗口的句柄到当前会话
allhandles=driver.window_handles

print driver.current_window_handle
print driver.window_handles

for handle in allhandles:
    if handle != nowhandle:
        # 用于处理多窗口之前切换,
        driver.switch_to_window(handle)

#----------------------------------------------------------------

# 从frames到frames(或到iframe中)
# switch_to_frame(),用于处理多框架的切换
driver.switch_to_frame("frameName")
#跳出iframe
driver.switch_to_default_content()

#进入iframe标签
driver.switch_to.frame("contentFrame")
# 跳出frame, 进入default content;
driver.switch_to.default_content()
#----------------------------------------------------------------

#弹出对话框
driver.switch_to_alert()
driver.switch_to.alert()
#----------------------------------------------------------------

#前进后退功能
driver.forward()
driver.back()
#----------------------------------------------------------------
# Cookies

# #转到正确的域
driver.get("http://www.example.com")

# #现在在这里的整个域设置的cookie,
# #这里的cookie的名称是'key',它的值是'value'的
driver.add_cookie({'name': 'key', 'value': 'value', 'path': '/'})

# additional keys that can be passed in are:
# 'domain' -> String,
# 'secure' -> Boolean,
# 'expiry' -> Milliseconds since the Epoch it should expire.

# 现在的输出当前URL的所有可用的cookies
for cookie in driver.get_cookies():
    print "%s -> %s" % (cookie['name'], cookie['value'])

# You can delete cookies in 2 ways
# By name
driver.delete_cookie("CookieName")
# Or
driver.delete_all_cookies()
#----------------------------------------------------------------
# 使用执行拖放动作类。本地事件事件需要被激活
from selenium.webdriver.common.action_chains import ActionChains
element = driver.find_element_by_name("source")
target =  driver.find_element_by_name("target")

ActionChains(driver).drag_and_drop(element, target).perform()
#----------------------------------------------------------------
# HtmlUnit的驱动程序
driver = webdriver.Remote("http://localhost:4444/wd/hub", webdriver.DesiredCapabilities.HTMLUNIT)
#----------------------------------------------------------------
# 启用JavaScript
driver = webdriver.Remote("http://localhost:4444/wd/hub", webdriver.DesiredCapabilities.HTMLUNITWITHJS)
#----------------------------------------------------------------
# Firefox Driver
driver = webdriver.Firefox()

#修改火狐简介
profile = webdriver.FirefoxProfile()
profile.native_events_enabled = True
driver = webdriver.Firefox(profile)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于python的appium例子

    版权声明:如需转载本文章,请保留出处! https://blog.csdn.net/xc_zhou/article/details/89643551 ...

    周小董
  • 关于python中phantomjs无法访问网页的处理

    笔者使用的系统是linux ubuntu,最近在学习爬虫的过程中遇到了一个抓狂的问题,我尝试使用selenium加phantomjs来登陆网页的时候,Pytho...

    周小董
  • selenium的一些使用方法

    新建实例driver = webdriver.Chrome() 1.通过标签属性Id查找元素 方法:find_element_by_id(element...

    周小董
  • 爬虫杀手锏-PhantomJS(附案列网站模拟登录豆瓣网)

    Selenium: 可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。Selenium 自己不带浏览器,不...

    一墨编程学习
  • python 3 的selenium模块

    ----http://blog.csdn.net/u010637662/article/details/53612197

    py3study
  • 知否知否-----selenium知多少(二)

    上期我们讲了一些selenium一些最近的元素定位,触发事件,等待等等,今天我们继续来看看接下来的知识点。

    我被狗咬了
  • 七、Selenium与phantomJS----------动态页面模拟点击、网站模拟登录 每天一个小实例1(动态页面模拟点击,并爬取你想搜索的职位信息) 每天一个小实例2(模拟网站登录)我用的是

    每天一个小实例1(动态页面模拟点击,并爬取你想搜索的职位信息) 1 from selenium import webdriver 2 from bs4 im...

    酱紫安
  • 基于python的appium例子

    版权声明:如需转载本文章,请保留出处! https://blog.csdn.net/xc_zhou/article/details/89643551 ...

    周小董
  • python爬虫入门(五)Selenium模拟用户操作

    爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider) 之间恢宏壮阔的斗争... 小莫想要某站上所有的电影,写了...

    zhang_derek
  • Python+Selenium笔记(十二):数据驱动测试

    (一)   前言 通过使用数据驱动测试,实现对输入值和预期结果的参数化。(例如:输入数据和预期结果可以直接读取Excel文档的数据) (二)   ddt 使用d...

    free赖权华

扫码关注云+社区

领取腾讯云代金券