WebDriver只能模拟针对特定元素的click, send_keys 操作,无法执行鼠标移动、悬浮、按键,选择菜单等操作,需要通过 Action Chains 类来操作
如下面操作,打开主菜单项后,再点击弹出的子菜单项
menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav # submenu1")
ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
也可以将多个动作排队,最后再执行
menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav # submenu1")
actions = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu)
actions.perform()
Selenium Python动作链方法
可以使用动作链执行大量操作,例如单击,右键单击等。以下是动作链中使用的重要方法的列表
Method | Description |
---|---|
click | Clicks an element. |
click_and_hold | Holds down the left mouse button on an element. |
context_click | Performs a context-click (right click) on an element. |
double_click | Double-clicks an element. |
drag_and_drop | Holds down the left mouse button on the source element, then moves to the target element and releases the mouse button. |
drag_and_drop_by_offset | Holds down the left mouse button on the source element, then moves to the target offset and releases the mouse button. |
key_down | Sends a key press only, without releasing it. |
key_up | Releases a modifier key. |
move_by_offset | Moving the mouse to an offset from current mouse position. |
move_to_element | Moving the mouse to the middle of an element. |
move_to_element_with_offset | Move the mouse by an offset of the specified element, Offsets are relative to the top-left corner of the element. |
perform | Performs all stored actions. |
pause | Pause all inputs for the specified duration in seconds |
release | Releasing a held mouse button on an element. |
reset_actions | Clears actions that are already stored locally and on the remote end |
send_keys | Sends keys to current focused element. |
Selenium中的告警窗是一个小消息框,出现在屏幕上,为用户提供一些信息或通知。它通知用户一些特定信息或错误,请求执行某些任务的权限,还提供警告消息。
2)输入型提示窗
此类告警空会询问用户的一些输入,Selenium 网络驱动程序可以使用 sendkeys(“ input…").
3) 确认窗口
提供几个操作选项,供用户选择
编程步骤
1)每当触发警报时,网页上都会出现一个弹出窗口。控件仅保留在父网页中。因此,Selenium Webdriver 的第一个任务是将焦点从父页面切换到警报弹出窗口。可以使用以下代码片段完成此操作。
alert_obj = driver.switch_to.alert
简单告警窗上有一条消息和一个“确定”按钮。当它弹出时,用户单击“确定”按钮接受它。
这是HTML代码,它将在单击主页上的“创建告警”按钮时生成简单告警
Simple_Alert.html
DOCTYPE html>
<html>
<body bgcolor="#C0C0C0">
<h1>
Simple Alert Demonstrationh1>
<p>
click the Below Button to create an Alertp>
<button onclick="alertFunction()" name ="alert"> Create Alertbutton>
<script>
function alertFunction() {
alert("Hi!, I am a Simple Alert. Please Click on the 'OK' Button.");
}
script>
body>
html>
下面是selenium处理代码
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.maximize_window()
location = "file://"
driver.get(location)
#Click on the "Alert" button to generate the Simple ert
button = driver.find_element_by_name('alert')
button.click()
#Switch the control to the Alert window
obj = driver.switch_to.alert
#Retrieve the message on the Alert window
msg=obj.text
print ("Alert shows following message: "+ msg )
time.sleep(2)
#use the accept() method to accept the alert
obj.accept()
print(" Clicked on the OK Button in the Alert Window")
driver.close
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.maximize_window()
location = "file://"
driver.get(location)
#Click on the "employeeLogin" button to generate the Prompt Alert
button = driver.find_element_by_name('continue')
button.click()
#Switch the control to the Alert window
obj = driver.switch_to.alert
time.sleep(2)
#Enter text into the Alert using send_keys()
obj.send_keys('Meenakshi')
time.sleep(2)
#use the accept() method to accept the alert
obj.accept()
#Retrieve the message on the Alert window
message=obj.text
print ("Alert shows following message: "+ message )
time.sleep(2)
obj.accept()
#get the text returned when OK Button is clicked.
txt = driver.find_element_by_id('msg')
print(txt.text)
driver.close