selenium的element对象的方法(selenium elements)

本篇文章给大家谈谈selenium的element对象的方法,以及selenium elements对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

关于Python selenium,无法使用,find_element求大神指点

题主你好,

首先来说你的代码不能正确执行的最终原因是下面这两个函数没有正确调用,这两个函数都是有参数的:

你第一个函数的调用就是正确的:

-----

再者说, find_XXX函数加了下划线并不代表它们不能用, 只是不建议用了,而且元素定位和网址请求的一般用法还不太一样,

网址请求的用法一般是:  driver.get('')

元素定位用法一般是: name = driver.find_element_by_id('kw')

可以看到上面两个的区别是网址请求前面没有变量, 而元素定位前面是有变量的, 因为你元素定位之后你还要使用该变量进行下一步的操作,如点击等,如果你没有定义变量,元素定位完成了你想对这个元素进行操作要怎么办(单个元素定位可以通过下划线,_,来代表变量,多个就没法弄了,这句话不理解你可以忽略).

所以下面把你的代码修改一下:

上面代码其实没改啥,就是给元素定位加了一个变量input, 最后那句是我自己加上去的, 意思说白了就是往百度搜索输入框中输入内容 "hello friend!",加上这句你能看到效果.

*.就上面的代码你仍然还是会看到find_element_by_id会有删除线, 但没有关系不影响使用(有删除线只是告诉你这种用法被废弃了, 或者你也可以理解不推荐使用这种用法了)

-----

最后说一下推荐用法,

其实和上面所讲的废弃的方法差不多,与上面的方法相比,有两点不同

多导入了一个By包,用来指定元素定位的种类(一会儿举例子就知道怎么用了)

元素定义的方法统一为find_element(),具体使用啥定位放在了函数中作为第一个参数.

下面把题主的例子用推荐的方法写一下:

通过上图可以看出,第二行是多出来的,用来导入By包,然后就是元素定位的写法,方法名只剩一个find_element,而具体导找元素定位的方式By.ID放到了方法中作为其第一个参数, 第二个参数为具体要查找的内容.

-----

总结: 上面总共给出了两种元素定位的写法, 后一种写法并不是新版本中才有的, 以前的版本中两种方法就都有, 猜测新版本中为了让大家统一使用后一种用法或是以后只维护后一种写法的代码了,所以才把头一种元素定位的方法给加上了删除线,既然加上了删除线可能在以后的某个版本就会不支持这种写法了,所以推荐题主还是使用后一种写法.

-----

扩展阅读:

当前By包中支持通过以下几种方法进行定位:

=====

希望可以帮到题主, 欢迎追问.

自动化selenium 基本操作方法总结

# 定位 UI 元素 (WebElements)

find_element_by_id

find_elements_by_name

find_elements_by_xpath

find_elements_by_link_text

find_elements_by_partial_link_text

find_elements_by_tag_name

find_elements_by_class_name

find_elements_by_css_selector

# 获取元素数据

ele.get_attribute('href')

ele.text

ele.inner

ele.get_attribute('outerHTML')

ele.get_attribute('innerHTML')

# 导入 ActionChains 类

from selenium.webdriver import ActionChains

# 鼠标移动到 ac 位置

ac = driver.find_element_by_xpath('element')

ActionChains(driver).move_to_element(ac).perform()

# 在 ac 位置单击

ac = driver.find_element_by_xpath("elementA")

ActionChains(driver).move_to_element(ac).click(ac).perform()

# 在 ac 位置双击

ac = driver.find_element_by_xpath("elementB")

ActionChains(driver).move_to_element(ac).double_click(ac).perform()

# 在 ac 位置右击

ac = driver.find_element_by_xpath("elementC")

ActionChains(driver).move_to_element(ac).context_click(ac).perform()

# 在 ac 位置左键单击 hold 住

ac = driver.find_element_by_xpath('elementF')

ActionChains(driver).move_to_element(ac).click_and_hold(ac).perform()

# 将 ac1 拖拽到 ac2 位置

ac1 = driver.find_element_by_xpath('elementD')

ac2 = driver.find_element_by_xpath('elementE')

ActionChains(driver).drag_and_drop(ac1, ac2).perform()

# 导入 Select 类

from selenium.webdriver.support.ui import Select

select = Select(driver.find_element_by_name('status')

select.select_by_visible_text("审核不通过")

# 页面切换

driver.switch_to.window("window name")

# 操作页面的前进和后退

driver.forward()  

driver.back()

# 页面等待

## 隐式等待

driver.implicitly_wait(10)

## 显示等待

try: # 页面一直循环,直到 id="myElement" 出现

element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "myElement")))

finally:

driver.quit()

selenium中find_element和find_elements的区别

在selenium中我们有时候也会看到这样定位元素的方法 driver.find_elements(By.CLASS_NAME, 'YT') , 如果要用到这样的写法,是需要导入By这个模块也就是 from selenium.webdriver.common.by import By ;By模块,用来定位元素的。和另外一个find的功能一样,就是写法不一样。

区别就是: 当element变成elements时,写法不变,就是返回的元素由返回单个元素变成了返回一个数组。

   find_element 是查找一个元素对象并返回元素对象。当页面有多个元素对象时返回第一个找到的元素。

   find_elements是查找页面所有元素并返回元素对象列表可以通过下标获取元素对象。a[0] 即第一个元素对象与find_element等效。

selenium 报错 Element is not clickable at point 常见解决方法

使用Selenium时,触发点击事件,经常报如下异常:

一般常见的如下四种方法:

原因一:对象未加载

说 明: 没加载出来就等待元素加载出来,再往下执行往往就会报错

解决方案:

原因二:当前页面存在frame/iframe,查找的对象不在当前frame/iframe下面

说 明: 如果元素不在当前frame/iframe里,在窗口里找是找不到frame/iframe下的元素的,所以更是无法相关操作的

解决方案: 需要要切换到i元素所在的frame/iframe里去找元素

原因三:不在视窗里

说明: 不在当前可视化的页面中

解决方案: 需要需要拉滚动条 或设置浏览器默认打开大小

原因四:要点击的元素被覆盖

解决方案: 可以使用事件链来解决

例如下拉菜单,通过hover,让子菜单显示,就可以点击了。

关于事件链详情,请点击文档。

部分参考参考 CSDN

原文链接:

如何利用selenium来进行自动化页面测试

selenium是一个自动化测试框架,它拥有IDE和API接口,可以应用于Java, C#. Python, Ruby等语言。用selenium来构建一个自动化的测试程序非常的简单。不过首先你需要熟悉web应用里面的request, response概念,以及XPath的用法。这里我将介绍一下如何利用Junit与selenium来实现自动化页面测试。

1. 下载必要依赖文件selenium-server-standalone-2.25.0.jar, junit-4.7.jar,并将它们放置到工程的lib文件夹下面 (我这里使用Firefox浏览器来作为客户端,所以就不需要下载额外的浏览器执行器,如果你想用IE或是Chrome做客户端,请下载对应的执行器

2. 建立一个测试工程,在工程里创建一个测试文件,并添加如下代码:

import com.thoughtworks.selenium.Selenium;

import junit.framework.TestCase;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.junit.runners.BlockJUnit4ClassRunner;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebDriverBackedSelenium;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.openqa.selenium.internal.WrapsDriver;

import org.openqa.selenium.support.ui.Wait;

import org.openqa.selenium.support.ui.WebDriverWait;

import java.io.IOException;

import static org.openqa.selenium.support.ui.ExpectedConditions.visibilityOfElementLocated;

@RunWith(BlockJUnit4ClassRunner.class)

public class pickTest extends TestCase {

  protected static Selenium selenium;

  private static WebDriver driver;

  @Before

  public void createAndStartService() throws IOException {

      selenium = new WebDriverBackedSelenium(new FirefoxDriver(), "");

      driver = ((WrapsDriver) selenium).getWrappedDriver();

  }

  @After

  public void createAndStopService() {

      driver.quit();

  }

  @Test

  public void should_open_google_page() throws InterruptedException {

      driver.get("");

      span style="color: #ff0000;"WebElement searchBox = driver.findElement(By.xpath("//*[@id=\"lst-ib\"]"));/span

      searchBox.sendKeys("selenium");

      WebElement searchButton = driver.findElement(By.xpath("//*[@id=\"tsf\"]/div[2]/div[3]/center/input[1]"));

      searchButton.click();

      span style="color: #3366ff;"WaitWebDriver wait = new WebDriverWait(driver, 30);

      wait.until(visibilityOfElementLocated(By.xpath("//*[@id=\"ab_name\"]/span")));/span

  }

}

3. 运行这个测试,你将看到firebox浏览器被自动启动,然后会自动的输入selenum并搜索。

这样,一个简单的自动化页面测试就完成了。有的朋友可能不太明白这段代码的含义。上面的代码中我标出了红色和蓝色两部分,我简单解释一下。Selenium是通过对浏览器的包装来进行页面处理的,因此我们首先会创建一个与浏览器相关的WebDriver对象。然后我们需要查找页面元素就是通过findeElement的方法和XPath的方式来获取页面对象(红色部分代码)。那么通常我们的一个点击操作产生服务器相应,这里就需要一些时间。蓝色部分的代码就是创建一个等待对象,你可以通过XPath的方式来确定返回后页面上的哪个元素加载完了就认为页面加载完了,同时等待对象也有一个超时设置,这样即是服务器端一直不返回或出错。我们依然可以结束测试。如何更快的确定页面元素的XPath,如下:

selenium获取测试对象的内容和状态

1.获取当前网页标题:String title=driver.getTitle();

2.获取当前网页的URL:String url=driver.getCurrentUrl();

3.获取元素的文本值,比如链接,纯文本等:String text=driver.findElement(By location).getText();

4.获取元素指定属性的值:String attribute=driver.findElement(By location).getAttribute("属性"); //这里的参数可以是class、name等任意属性

5.获取元素输入框内的文本值:String attribute=driver.findElement(By location).getAttribute("value");

6.获取元素标签名称:String tagName=driver.findElement(By location).getTagName();

1.是否显示:使用element.is_displayed()方法。

2.是否存在:使用find_element_by_xxx()方法,捕获其抛出的异常, 如果存在异常的话则可以确定该元素不存在。

3.是否被选中:一般判断表单元素,如radio或checkbox是否被选中,使用element.is_selected()方法( 返回true代表已被选中,返回false代表未被选中 )。

4.是否有效:即是否为灰化状态,使用element.is_enabled()方法( 可用于判断button/checkbox/radio是否置灰 )。

关于selenium的element对象的方法和selenium elements的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


【免责声明】:

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

【关于转载】:

本站尊重互联网版权体系,本站部分图片、文章大部分转载于互联网、所有内容不代表本站观点、不对文章中的任何观点负责、转载的目的只用于给网民提供信息阅读,无任何商业用途,所有内容版权归原作者所有
如本站(文章、内容、图片、视频)任何资料有侵权,先说声抱歉;麻烦您请联系请后台提交工单,我们会立即删除、维护您的权益。非常感谢您的理解。

【附】:

二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!

注:本站资源来自网络转载,版权归原作者和公司所有,如果有侵犯到您的权益,请第一时间联系我们处理!

-----------------------------------------------------------------------------------------------------------

【版权声明】:

一、本站致力于为源码爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、如有内容侵犯您的版权或其他利益的,请编辑邮件并加以说明发送到站长邮箱。站长会进行审查之后,情况属实的会在三个工作日内为您删除。
-----------------------------------------------------------------------------------------------------------


内容投诉
源码村资源网 » selenium的element对象的方法(selenium elements)
您需要 登录账户 后才能发表评论

发表评论

欢迎 访客 发表评论