【Selenium】元素操作

本文详细介绍了Selenium中对网页元素的各种操作,包括打开网址、输入内容、点击元素、清空内容、获取网址和页面标题等。同时,还涵盖了浏览器窗口切换、Frames切换、弹窗操作及元素拖拽等高级功能。对于每个操作,文章都提供了相应的使用对象和注意事项,是Selenium自动化测试的重要参考。
摘要由CSDN通过智能技术生成

  UI自动化语法就是元素+操作+数据的结合。在上一篇中已经列举了一些元素定位的方法,这篇文章中,主要记录对元素进行操作的方法。

打开网址 get

  返回类型是void,传入类型是string类型的url。

//初始化一个FirefoxDriver类型的对象
WebDriver driver = new FirefoxDriver();

//正确写法
driver.get("http://www.baidu.com");
driver.get("https://www.baidu.com");

//错误写法
driver.get("www.baidu.com");   

特点

  • 页面完全打开后,方法才结束。

注意

  • 不判断重定向后页面的打开情况。


输入内容 sendKeys

  返回类型是void,接受CharSequence类型的数据,即可以传入很多个参数。

//找到搜索输入框element
WebElement element = driver.findElement(By.id("kw"));

//正确写法
element.sendKeys("喜乐的博客");
/*
  拆分字符串的方式输入多个参数,
  有时可以避免被认为是机器人行为
*/
element.sendKeys("喜乐","的","博客"); 

使用对象

正确 错误
<input type=“text”> <input type=“button”>
<input type=“username”> <iframe></iframe>
<input type=“password”> <frame></frame>
<textarea><textarea> 其他标签

  支持input这种tag类型,且type属性为text、username、password的元素;支持textarea这种tag类型;不支持input类型但type为button的元素,不支持iframe、frame,以及除以上,其他的标准html控件。


注意

  • sendKeys是在原有的输入内容后追加输入,而不是清除内容后重新输入。


点击元素 click

  返回类型是void.

//找到搜索按钮
WebElement element = driver.findElement(By.id("su"));

//点击
element.click();

  找到元素后,页面发生跳转,此时这个元素由于无法关联到新的页面,调用click()方法时,就会抛出异常StaleElementReferenceException


使用对象

正确 错误
其他所有元素 <a style = “visibility:hidden”></a> /*不可见元素*/
<a style = “height:0px;width:0px”></a> /*高和宽都是0的元素*/

操作特性

  • 所有元素都是可以被点击的

注意

  • 被点击元素不能被遮挡
  • 元素不能被隐藏。css设置为隐藏的元素,调用click()点击时,会抛出元素不可点的异常。


清空内容 clear

  返回类型是void.

//找到密码输入框
WebElement element =</
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Selenium 是一种自动化测试工具,主要用于验证Web应用的运行效果是否正常。在使用 Selenium 进行Web自动化测试的过程中,我们通常需要对页面上的各种元素进行操作。这些元素包括按钮、文本框、链接、表单等。 ### 元素定位 在进行元素操作之前,首先需要定位到具体的HTML元素。这可以通过多种方式进行: 1. **ID**: 使用 `id` 属性唯一标识一个元素。 ```python driver.find_element_by_id("myId") ``` 2. **标签名**: 根据元素的标签名称查找。 ```python driver.find_elements_by_tag_name("button") ``` 3. **类名**: 如果元素有特定的类名,则可以使用它来进行定位。 ```python driver.find_elements_by_class_name("myClass") ``` 4. **CSS选择器**: 更复杂的选择器形式,可以根据CSS规则匹配多个元素。 ```python driver.find_elements_by_css_selector(".myClass input[type='text']") ``` 5. **XPath**: 使用路径表达式来定位元素。 ```python driver.find_element_by_xpath("//input[@type='submit']") ``` 6. **属性值**: 根据某个属性的具体值来定位元素。 ```python driver.find_element_by_link_text("My Link Text") ``` ### 元素操作 #### 点击操作 ```python element = driver.find_element_by_id("myButton") element.click() ``` #### 文本输入 ```python input_field = driver.find_element_by_name("search_query") input_field.send_keys("Search term") input_field.submit() # 或者直接调用 .send_keys 方法发送回车键模拟提交表单 ``` #### 获取文本内容 ```python text = element.text ``` #### 鼠标悬停操作 ```python action_chains = ActionChains(driver) action_chains.move_to_element(element).perform() ``` #### 切换框架或窗口 ```python driver.switch_to.frame(iframe) # 切换到指定的frame driver.window_handles[-1] # 切换到最后打开的一个窗口 ``` ### 定时操作 有时我们需要等待元素加载完成再进行操作,或者等待某种条件满足后再继续测试流程。这通常通过 Selenium 的 WebDriverWait 类实现: ```python from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException try: element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "myElement")) ) except TimeoutException: print("Element not found within the specified time.") ``` ### 相关问题: 1. **如何处理动态生成的元素** - 当页面上元素依赖于JavaScript动态生成时,该如何定位和操作它们? 2. **如何管理浏览器驱动** - 在自动化测试中应如何有效地初始化和关闭浏览器驱动? 3. **如何处理复杂的表单交互** - 如何实现包含多重表单嵌套、下拉列表或复选框等的复杂交互?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值