自己写了一部分,也包含一些从其它文章里的摘录汇总,供自己后续学习备忘之用
- 键盘输入
- 获取元素自带的text内容
方法二:获取input中value的值
-
alert弹出框处理
- 模拟鼠标键盘操作
http://blog.youkuaiyun.com/df0128/article/details/45536573
- 启动本地跟默认浏览器
- 窗口切换
windows = driver.window_handles
# 切换到当前最新打开的窗口
driver.switch_to.window(windows[-1])
window_1 = driver.current_window_handle
# 获得打开的所有的窗口句柄
windows = driver.window_handles
# 切换到最新的窗口
for current_window in windows:
if current_window != window_1:
driver.switch_to.window(current_window)
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
#新建标签页
ActionChains(browser).key_down(Keys.CONTROL).send_keys("t").key_up(Keys.CONTROL).perform()
# 关闭标签页
ActionChains(browser).key_down(Keys.CONTROL).send_keys("w").key_up(Keys.CONTROL).perform()
4.标签页切换
from selenium import webdriver
browser=webdriver.Firefox()
browser.get('xxxxx')
# 获取当前窗口句柄(窗口A)
handle = browser.current_window_handle
# 打开一个新的窗口
browser.find_element_by_id('xx').click()
# 获取当前所有窗口句柄(窗口A、B)
handles = browser.window_handles
# 对窗口进行遍历
for newhandle in handles:
# 筛选新打开的窗口B
if newhandle!=handle:
# 切换到新打开的窗口B
browser.switch_to_window(newhandle)
break #跳出循环
# 在新打开的窗口B中操作
browser.find_element_by_id('xx').click()
# 关闭当前窗口B
browser.close()
#切换回窗口A
browser.switch_to_window(handles[0])
http://www.361way.com/python-selenium-switch-windows-tabs/5184.html
http://blog.youkuaiyun.com/real_tino/article/details/56521757
- 控制窗口打开方式(tab或新页面)
switch_to_window该方法是Webdriver中内置的一个方法,除了在多个浏览器中作切换用,单个浏览器多个标签(Tab)之间的切换也可以用这个方法,思路就是先取得所有标签的句柄,然后循环遍历并判断是否是当前标签页,如果不是则切换
target=_blank意思是在新窗口中打开被链接文档(引自w3school),通俗点解释就是超链接会用过新窗口(新标签)打开,那么将其值清除便可实现点击该超链接后不会另起一个新标签页。利用Document 对象方法查找该id然后将其target的值清除:
js = 'document.getElementById("setf").target="";'
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
js = 'document.getElementById("setf").target="";'
driver.execute_script(js)
driver.find_element_by_id("setf").click()
driver.find_element_by_link_text("百度首页").click()
-
处理模态窗口的方法
1, 以如下的站点为例:https://developer.mozilla.org/samples/domref/showModalDialog.html
2, 当点击open a model dialog 按钮时, 会弹出模态窗口, 此时 按照通常的做法 便是使用 click操作,然后再switch to 弹出的窗口。 这样是行不通的, 因为click 那个button后 ,code被挂起了,这时候要等用户操作模态窗口完毕 才会继续执行下面的code。
3, 解决办法: 先使用sendkeys("") 定位到要点击的button上面,然后使用java robot类来模拟点击键盘的回车键, 如下:
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
Thread.sleep(500); //这里最好是等一下 时间根据实际情况来
然后就可以照常的去 getWindowHandles()来得到窗口的引用了,其他的照旧。 省略省略省略。。。
- 显性等待
try
:
WebDriverWait(driver,
20
,
0.5
).until(EC.presence_of_element_located(locator))
print
driver.find_element_by_link_text(
'优快云'
).get_attribute(
'href'
)
finally
:
driver.close()
-
截图
from datetime import *
driver.get_screenshot_as_file(u"D:\\selenium-test-img\\%s.png" % datetime.now().strftime("%Y%m%d.%H%M%S.%f")[:-3])