外贸响应式网站设计,石家庄网站定制模板建站,网站建设在哪些方面,最全做暖暖网站Web控件进阶交互 测试时常需要模拟键盘或鼠标操作#xff0c;可以用Python的ActionChains来模拟。ActionChains是Selenium提供的一个子类#xff0c;用于生成和执行复杂的用户交互操作#xff0c;允许将一系列操作链接在一起#xff0c;然后一次性执行。
from selenium im…Web控件进阶交互 测试时常需要模拟键盘或鼠标操作可以用Python的ActionChains来模拟。ActionChains是Selenium提供的一个子类用于生成和执行复杂的用户交互操作允许将一系列操作链接在一起然后一次性执行。
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys# 初始化WebDriver和ActionChains
driver webdriver.Chrome()
actions ActionChains(driver)# 打开一个网页
driver.get(https://www.example.com)
移动到元素并点击
element driver.find_element(By.ID, example_id)
actions.move_to_element(element).click().perform()
右键点击
actions.context_click(element).perform()
双击
actions.double_click(element).perform()
拖放
source driver.find_element(By.ID, source_id)
target driver.find_element(By.ID, target_id)
actions.drag_and_drop(source, target).perform()
拖放到指定位置
actions.click_and_hold(source).move_to_element(target).release().perform() 键盘输入
actions.send_keys(Hello World!).perform()
组合键操作
actions.key_down(Keys.CONTROL).send_keys(a).key_up(Keys.CONTROL).perform() 网页frame于多窗口处理 测试时要定位Web内的一个元素时若定位不到这个元素就需要考虑是不是浏览器内嵌了一个frame窗口或者要找的元素在新打开的窗口。为了解决这个问题就需要进行frame切换或者窗口切换操作。 frame类似于在原有主HTML的基础上又嵌套了一个HTML嵌套的HTML是独立的不影响主HTML。执行Web测试打开一个页面时光标的定位是在主页面中如果主页面是由多个frame组成的那么光标无法直接定位到具体的元素需要切换到对应的frame中。
iframe解析
from selenium import webdriver
from selenium.webdriver.common.by import Bydriver webdriver.Chrome()
driver.get(https://www/example.com)
通过iframe索引切换
可以通过iframe在页面中的索引来切换。索引从0开始
driver.switch_to.frame(0)
通过 iframe的名称或ID切换
如果iframe有name或id属性可以通过这些属性来切换
driver.switch_to.frame(iframe_name)
通过iframe的WebElement切换
先找到iframe元素然后通过该元素切换
iframe_element driver.find_element(By.TAG_NAME, iframe)
driver.switch_to.frame(iframe_element)
嵌套iframe的切换
如果iframe内部还有iframe需要先切换到外层iframe然后再切换到内层的iframe
outer_iframe driver.find_element(By.ID, outer_iframe_id)
driver.switch_to.frame(outer_iframe)
inner_iframe driver.find_element(By.ID, inner_iframe_id)
driver.switch_to.frame(inner_iframe)# 切换到外层iframe
driver.switch_to.parent_frame() 切换回主文档
无论当前再哪个iframe中都可以直接切换到主文档
driver.switch_to.default_content()
多窗口处理 元素有属性浏览器的窗口也有属性浏览器窗口的属性用句柄handle来识别。当用浏览器打开一个窗口时就需要用句柄来操作这个窗口。
获取句柄
# 获取当前窗口的句柄
cnt_handle driver.current_window_handle
# 获取所有窗口的句柄
all_handles driver.window_handles 句柄切换
driver.switch_to.window(target_handle)
Selenium对多浏览器处理 自动化测试过程中往往需要对不同的浏览器做兼容性测试可以通过对测试用例的修改实现对不同浏览器的自动化兼容性测试。实现对不同浏览器的自动化兼容性测试需要先将各个浏览器的驱动在PC端配置好。 参数化多浏览器测试
from selenium import webdriver
from selenium.webdriver.common.by import By
import timedef test_with_browser(browser_name):if browser_name chrome:driver webdriver.Chrome()elif browser_name firefox:driver webdriver.Firefox()elif browser_name edge:driver webdriver.Edge()elif browser_name safari:driver webdriver.Safari()else:raise ValueError(fUnsupported browser: {browser_name})driver.get(https://www.baidu.com)print(f{browser_name.capitalize()} - Title: {driver.title})driver.quit()if __name__ __main__:for browser in [chrome, firefox, edge, safari]:test_with_browser(browser)