模拟键盘鼠标
'''
1、click:单击鼠标左键
2、click_and_hold:点击鼠标左键,不松开
3、context_click:点击鼠标右键
4、double_click:双击鼠标左键
5、drag_and_drop:拖拽到某个元素然后松开
6、drag_and_drop_by_offset:拖拽到某个坐标然后松开
7、key_down:按下某个键盘上的键
8、key_up:松开某个键
9、move_by_offset:鼠标从当前位置移动到某个坐标
10、move_to_element:移动到某个元素
11、move_to_element_with_offset:移动到某个元素(左上角坐标)多少距离的位置
12、perform:执行链中的所有动作
13、release:在某个位置松开鼠标左键
14、send_keys:发送某个键到当前焦点的元素
15、send_keys_to_element:发送某个键到指定元素
'''
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys
class TestCase(object):
def __init__(self):
self.driver = webdriver.Firefox()
# self.driver.get("http://sahitest.com/demo/clicks.htm")
self.driver.get("https://www.baidu.com")
def test_mouse(self):
btn = self.driver.find_element_by_xpath('/html/body/form/input[2]')
ActionChains(self.driver).double_click(btn).perform()
sleep(2)
btn = self.driver.find_element_by_xpath('/html/body/form/input[3]')
ActionChains(self.driver).click(btn).perform()
sleep(2)
btn = self.driver.find_element_by_xpath('/html/body/form/input[4]')
ActionChains(self.driver).context_click(btn).perform()
sleep(5)
def test_key(self):
kw = self.driver.find_element_by_id('kw')
kw.send_keys('selenium')
sleep(2)
kw.send_keys(Keys.CONTROL,'a')
sleep(2)
kw.send_keys(Keys.CONTROL,'x')
sleep(2)
kw.send_keys(Keys.CONTROL,'v')
sleep(3)
set = self.driver.find_element_by_name('tj_settingicon')
ActionChains(self.driver).move_to_element(set).perform()
sleep(5)
if __name__ == '__main__':
case = TestCase()
# case.test_mouse()
case.test_key()
弹窗
'''
alert:提示
confirm:确认取消弹框
prompt:提示用户输入数据
点击确认按钮:driver.switch_to.alert.accept()
点击取消按钮:driver.switch_to.alert.dismiss()
如果alert弹框上有文本框,可以输入文字
driver.switch_to.alert.sendkeys()
返回alert上的文本内容
text = driver.switch_to.alert.text
'''
from selenium import webdriver
import os
from time import sleep
class TeseCase(object):
def __init__(self):
self.driver = webdriver.Firefox()
path = os.path.dirname(os.path.abspath(__file__))
file_path = "file:///"+path+"/forms.html"
self.driver.get(file_path)
def test_alert(self):
self.driver.find_element_by_id("alert").click()
sleep(2)
alert = self.driver.switch_to.alert
print(alert.text)
alert.accept()
sleep(2)
def test_confirm(self):
self.driver.find_element_by_id("confirm").click()
sleep(2)
confirm = self.driver.switch_to.alert
print(confirm.text)
confirm.dismiss()
sleep(2)
def test_prompt(self):
self.driver.find_element_by_id("prompt").click()
sleep(2)
prompt = self.driver.switch_to.alert
print(prompt.text)
sleep(2)
prompt.send_keys('20')
sleep(2)
prompt.accept()
sleep(2)
if __name__ == '__main__':
case = TeseCase()
# case.test_alert()
case.test_confirm()
# case.test_prompt()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>my forms</title>
</head>
<body>
<form action="javascript:alert('login')">
用户名:<input type="text" name="username" id="username"><br>
密码:<input type="password" name="pwd" id="pwd"><br>
<hr>
游泳:<input type="checkbox" name="swiming" value="swiming"><br>
阅读:<input type="checkbox" name="reading" value="reading"><br>
<hr>
性别:<br>
男:<input type="radio" name="gender" value="male"><br>
女:<input type="radio" name="gender" value="female"><br>
<hr>
省份:<select name="provise" id="provise" multiple>
<option value="bj">北京</option>
<option value="tj">天津</option>
<option value="sh">上海</option>
<option value="sz">深圳</option>
<option value="gz">广州</option>
<option value="hz">杭州</option>
</select>
<input type="submit" value="注册" id="submit">
</form>
<hr>
<a href="javascript:alert('这是提示框!')" id="alert">Alert</a><br>
<a href="javascript:confirm('真的要删除数据吗')" id="confirm">confirm</a><br>
<a href="javascript:var age = prompt('请输入年龄');document.write(age)" id="prompt">Prompt</a><br>
</body>
</html>