本篇文章给大家谈谈selenium的element对象的方法,以及selenium elements对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、关于Python selenium,无法使用,find_element求大神指点
- 2、自动化selenium 基本操作方法总结
- 3、selenium中find_element和find_elements的区别
- 4、selenium 报错 Element is not clickable at point 常见解决方法
- 5、如何利用selenium来进行自动化页面测试
- 6、selenium获取测试对象的内容和状态
关于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的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
2、本站永久网址:https://www.yuanmacun.com
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
源码村资源网 » selenium的element对象的方法(selenium elements)