精华内容
下载资源
问答
  • WebElement相关方法

    千次阅读 2019-03-29 16:35:40
    java selenium常用API(WebElement、iFrame、select、alert、浏览器窗口、事件、js) 一 WebElement相关方法 1.点击操作 WebElement button = driver.findElement(By.id(“login”)); button.cl...

    https://www.cnblogs.com/unknows/p/7688613.html

    java selenium常用API(WebElement、iFrame、select、alert、浏览器窗口、事件、js) 一
    WebElement相关方法
    1.点击操作

    WebElement button = driver.findElement(By.id(“login”));
    button.click();
    由元素对象调用click()方法;

    2.清除操作

    WebElement username = driver.findElement(By.id(“username_input”));
    username.clear();
    调用之后,会把输入框的内容全部清空;

    3.获得元素属性的值

    上面代码是用户名输入框的源码,我们要获取这个"用户名"三个字就需要用到;

    getAttribute(java.lang.String name) 这方法,代码如下:

    WebElement username = driver.findElement(By.id(“u”));
    username.getAttribute(“placeholder”);

    4.获取元素的文本

    WebElement login = driver.findElement(By.id("loginBtn")); login.getText();

    5.元素是否显示

    方法有个返回值类型是boolean,也就是说如果元素显示了返回true,如果没有显示返回false;

    WebElement login = driver.findElement(By.id(“loginBtn”));
    login.isDisplayed();

    6.元素是否被选择

    WebElement checkbox = driver.findElement(By.id(“checkbox_id”));
    checkbox.isSelected();
    checkbox.isSelected();//会有返回值,如果勾选了。返回true,如果没有勾选返回false。

    7.元素是否被启用

    WebElement login = driver.findElement(By.id(“loginBtn”));
    login.isEnabled();
    //如果可用返回true,如果不可用返回false

    8.提交操作

    登录
    WebElement login = driver.findElement(By.id(“loginBtn”));
    login.submit();

    iFrame处理
    有时候我们在定位一个页面元素的时候发现一直定位不了,反复检查自己写的定位器没有任何问题,代码也没有任何问题。这时你就要看一下这个页面元素是否在一个iframe中,这可能就是找不到的原因之一。如果你在一个default content中查找一个在iframe中的元素,那肯定是找不到的。反之你在一个iframe中查找另一个iframe元素或default content中的元素,那必然也定位不到。selenium webdriver中提供了进入一个iframe的方法:

    WebDriver org.openqa.selenium.WebDriver.TargetLocator.frame(String nameOrId)
    也提供了一个返回default content的方法:

    WebDriver org.openqa.selenium.WebDriver.TargetLocator.defaultContent()
    driver.switchTo().frame(“id”);//传入的是iframe的id
    返回上一个iFrame:

    driver.switchTo().defualContent();

    select 操作下拉选择框
    html代码:

    复制代码
    复制代码

    A 安徽 A 澳门 B 北京 C 重庆 F 福建 G 甘肃 G 广东 G 广西 G 贵州 H 海南 H 河北 H 河南 H 黑龙江 复制代码 首先定位到select下拉框

    WebElement element_province = driver.findElement(By.id(“province”));
    然后将定位到的element传入select

    Select province = new Select(element_province);
    然后由select来操作下拉框

    province.selectByIndex(0) //根据所选值的位置来选择下拉框值,从0开始
    province.selectByValue(“18”) //根据value值来选择下拉框的值,比如这里的18,选择的就是海南
    province .selectByVisibleText(“北京”)//这个是根据可见文本来操作下拉菜单,比如你选的北京,那么就会找到北京作为下拉框的

    处理alert 弹窗
    获取当前页面弹出的alert

    Alert a= driver.switchTo().alert();
    alert.accept();
    获取到alert之后,我们可以通过alert提供的方法来获取alert上的文本,模拟点击alert上的确定按钮,模拟点击alert上的取消按钮等

    处理浏览器弹出的新窗口
    我们在一个页面上,点击一个链接之后不会在当前页面上打开此链接而是新开一个窗口打开此页面。那么我们如何跳转到新开的页面去操作新开的页面呢?selenium也提供了对应的API来处理。首先我们需要了解下,每个窗口都是有个句柄的,可以理解为浏览器窗口的标识符。我们可以根据这些标识符来确定新开的窗口,具体思路如下:

    首先获得当前句柄:

    String current_handles = driver. getWindowHandle();
    出现新窗口之后,获取所有窗口句柄

    Set all_handles = driver.getWindowHandles();
    循环判断,把当前句柄从所有句柄中移除,剩下的就是你想要的新窗口

    Iterator it = all_handles.iterator();
    while(it.hasNext()){
    if(current_handles == it.next()) continue;
    //跳入新窗口
    WebDriver window = dr.switchTo().window(it.next());
    }
    最后就可以在新窗口的页面进行相关操作了,在新窗口操作的时候使用新driver进行页面操作,新driver是window

    如果想回到最开始的窗口请使用:

    driver.switchTo().window(current_handles);

    执行JS脚本
    有时候我们需要JS脚本来辅助我们进行测试,比如我们用JS赋值或者用js执行点击操作等。

    方法一:

    声明js脚本

    String js =“alert(“hello,this is a alert!”)”;

    执行js脚本

    ((JavascriptExecutor) driver).executeScript(js);

    执行之后会在浏览器上弹出一个alert,显示内容是“hello,this is a alert!”

    核心代码如下:

    WebDriver driver = new FirefoxDriver();
    String js =“alert(“hello,this is a alert!”)”;
    ((JavascriptExecutor) driver).executeScript(js);
    Thread.sleep(2000);
    driver.quit();
    方法二:

    这个方法比较适用某些元素不易点击的情况下使用,比如网页内容太长,当前窗口太长,想要点击那些不在当前窗口可以看到元素可以用此方法。
    ((JavascriptExecutor) driver).executeScript(String js, Object args);
    此方法有两个参数,第一个是js脚本,至于js脚本你像写点击的或者输入的脚本都可以,我们这里举例为点击操作。第二个参数是:要点击的元素。
    比如我要点击百度搜索的搜索按钮,可以这样写:
    ((JavascriptExecutor) driver).executeScript(“arguments[0].click();”, driver.findElement(By.id(“su”)));
    核心代码如下:

    复制代码
    复制代码
    WebDriver driver = new FirefoxDriver();
    driver.get(“https://www.baidu.com/”);
    String js =“arguments[0].click();”;
    driver.findElement(By.id(“kw”)).sendKeys(“JAVA”);
    WebElement searchButton = driver.findElement(By.id(“su”));
    ((JavascriptExecutor) driver).executeScript(js,searchButton);
    Thread.sleep(2000);
    driver.quit();
    复制代码
    复制代码

    等待元素加载
    1.硬性等待(不推荐)

    Thread.sleep(int sleeptime);
    2.智能等待

    复制代码
    复制代码
    public void waitForElementToLoad(int timeOut, final By By) {
    try {
    (new WebDriverWait(driver, timeOut)).until(new ExpectedCondition() {
    public Boolean apply(WebDriver driver) {
    WebElement element = driver.findElement(By);
    return element.isDisplayed();
    }
    });
    } catch (TimeoutException e) {
    Assert.fail(“超时!! " + timeOut + " 秒之后还没找到元素 [” + By + “]”,e);
    }
    }
    复制代码
    复制代码
    3.设置等待页面加载完毕

    int pageLoadTime = 10;
    driver.manage().timeouts().pageLoadTimeout(pageLoadTime, TimeUnit.SECONDS);

    鼠标事件
    action类去操作鼠标

    复制代码
    Actions 类提供了鼠标操作的常用方法:

    · contextClick() 右击
    · clickAndHold() 鼠标点击并控制
    · doubleClick() 双击
    · dragAndDrop() 拖动
    · release() 释放鼠标

    · perform() 执行所有Actions中存储的行为

    鼠标右击操作。

    导入提供鼠标操作的ActionChains 类
    Actions(driver)
    调用Actions()类,将浏览器驱动driver作为参数传入。
    contexClick(xxx)
    contextClick()方法用于模拟鼠标右键操作,在调用时需要指定元素定位。
    perform() 执行所有ActionChains中存储的行为,可以理解成是对整个操作的提交动作。

    action.contextClick(driver.findElement(By.className(“cnisdisd”))).perform();

    鼠标悬停。clickAndHold();

    action1.clickAndHold(driver.findElement(By.linkText(“设置”))).perform();

    鼠标双击操作。
    doubleClick()方法用于模拟鼠标双击操作。

    action1.doubleClick(driver.findElement(By.className(""))).perform();

    鼠标拖放操作。
    drag_and_drop(source, target)在源元素上按下鼠标左键,然后移动到目标元素上释放。
    ·source:鼠标拖动的源元素。
    ·target:鼠标释放的目标元素。

      WebElement source=driver.findElement(By.className("element"));
      WebElement target=driver.findElement(By.className("element"));
      action1.dragAndDrop(source, target).perform();
    

    释放鼠标
    release()方法用于释放鼠标事件。

    action1.release().perform();
    复制代码
    键盘事件
    复制代码
    使用键盘按键方法前需要先导入keys类。
    以下为常用的键盘操作:
    sendKeys(Keys.BACK_SPACE) 删除键(BackSpace)
    sendKeys(Keys.SPACE) 空格键(Space)
    sendKeys(Keys.TAB) 制表键(Tab)
    sendKeys(Keys.ESCAPE) 回退键(Esc)
    sendKeys(Keys.ENTER) 回车键(Enter)
    sendKeys(Keys.CONTROL,‘a’) 全选(Ctrl+A)
    sendKeys(Keys.CONTROL,‘c’) 复制(Ctrl+C)
    sendKeys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)
    sendKeys(Keys.CONTROL,‘v’) 粘贴(Ctrl+V)
    sendKeys(Keys.F1) 键盘F1
    ……
    sendKeys(Keys.F12) 键盘F12

    eg:

    package com.cy.selenium;
    import org.openqa.selenium.By;
    import org.openqa.selenium.Keys;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;

    public class Test02 {
    public static void main(String[] args) {
    WebDriver driver=new FirefoxDriver();
    driver.manage().window().maximize();
    driver.get(“http://www.baidu.com/”);
    WebElement input =driver.findElement(By.id(“kw”));
    // 输入内容
    input.sendKeys(“seleniumm”);
    // 删除多余的m
    input.sendKeys(Keys.BACK_SPACE);
    // 输入空格+教程
    input.sendKeys(Keys.SPACE);
    input.sendKeys(“教程”);
    // ctrl+a
    input.sendKeys(Keys.CONTROL,“a”);
    // ctrl+x
    input.sendKeys(Keys.CONTROL,“x”);
    // ctrl+v
    input.sendKeys(Keys.CONTROL,“v”);
    // 通过回车键 查询
    input.sendKeys(Keys.ENTER);
    driver.close();
    }
    }
    复制代码

    设置浏览器窗口大小
    窗口最大化

    driver.manage().window().maximize();
    指定设置窗口大小

    Dimension d = new Dimension
    driver.manage().window().setSize(d);
    指定窗口在屏幕中出现位置

    Point p = new Point(500, 300);
    driver.manage().window().setPosition§;

    展开全文
  • Highlight WebElement

    2013-05-10 11:28:48
    /// Highlight WebElement /// public void highlightElement(WebDriver driver, WebElement element) {    JavascriptExecutor js = (JavascriptExecutor) driver;  js.executeScript
    /// <Summary>
    /// Highlight WebElement
    /// </Summary>
    public void highlightElement(WebDriver driver, WebElement element) {
     
             JavascriptExecutor js = (JavascriptExecutor) driver;
             js.executeScript( "element = arguments[0];" +
                  "original_style = element.getAttribute('style');" +
                      "element.setAttribute('style', original_style + \";" +
                  "background: yellow; border: 2px solid red;\");" +
                  "setTimeout(function(){element.setAttribute('style', original_style);}, 1000);" , element);
    展开全文
  • Selenium WebElement 方法分类 WebElement 1.查找元素 findElement findElements 2.获取 element.tag_name element.text element.get_property(name) element.get_attribute(name) element.location ...

    Selenium WebElement 方法分类

    WebElement
    1.查找元素
      findElement
      findElements
    2.获取
      element.tag_name
      element.text
      element.get_property(name)
      element.get_attribute(name) 
      element.location
      element.size
      element.rect
      element.parent
      element.id
      element.location_once_scrolled_into_view
    3.点击提交输入
      element.click()
      element.submit()
      elemenr.send_keys(value)

    3.截图
      element.screenshot_as_png
      element.screenshot_as_base64
      element.screenshot(filename)
    4.元素判断
      element.is_selected()
      element.is_enabled()
      element.is_displayed()

    展开全文
  • 关于 WebElement 对象的方法,常用的如下表所示: 序号 方法/属性 描述 1 WebElement.click() 单次点击 2 WebElement.send_keys() 输入指定内容 3 WebElement.clear() 清空输入框内容 4 WebElement....

    关于 WebElement 对象的方法,常用的如下表所示:

    序号方法/属性描述
    1WebElement.click()单次点击
    2WebElement.send_keys()输入指定内容
    3WebElement.clear()清空输入框内容
    4WebElement.get_attribute()获取元素的属性值
    5WebElement.is_seleted()判断元素是否被选中,返回一个 bool 类型值
    6WebElement.is_enabled()判断元素是否可用,返回一个 bool 类型值
    7WebElement.is_displayed()判断元素是否可见,返回一个 bool 类型值
    8WebElement.value_of_css_property()获取元素的 css 属性值

    WebElement.click()

    对定位元素做单次点击操作。

    WebElement.send_keys()

    inputtextpasswordsubmit等文本输入类型输入指定的内容。

    WebElement.clear()

    清空输入内容。

    from selenium import webdriver
    from time import sleep
    
    driver = webdriver.Chrome()  # 打开浏览器
    driver.maximize_window()  # 浏览器最大化
    driver.get("https://www.baidu.com/")  # 跳转至百度首页
    sleep(1)
    element = driver.find_element_by_id("kw")  # 定位搜索输入框
    element.send_keys("自动化测试")  # 向定位元素输入内容
    sleep(1)
    element.clear()  # 清空输入内容
    sleep(1)
    element1 = driver.find_element_by_xpath("//div[@class='s_tab_inner']/a[4]")
    element1.click()  # 点击定位元素
    sleep(3)
    
    driver.quit()
    

    WebElement.get_attribute()

    获取定位元素的属性值:

    from selenium import webdriver
    from time import sleep
    
    driver = webdriver.Chrome()  # 打开浏览器
    driver.maximize_window()  # 浏览器最大化
    driver.get("https://www.baidu.com/")  # 跳转至百度首页
    sleep(1)
    element = driver.find_element_by_xpath("//div[@id='s-top-left']/a[5]")
    print(element.get_attribute("href"))  # http://tieba.baidu.com/
    print(element.get_attribute("target"))  # _blank
    print(element.get_attribute("class"))  # mnav c-font-normal c-color-t
    
    driver.quit()
    

    WebElement.is_seleted()

    判断元素是否被选中,返回一个 bool 类型值。

    WebElement.is_enabled()

    判断元素是否可用,返回一个 bool 类型值。

    WebElement.is_displayed()

    判断元素是否可见,返回一个 bool 类型值。

    from selenium import webdriver
    from time import sleep
    
    driver = webdriver.Chrome()  # 打开浏览器
    driver.maximize_window()  # 浏览器最大化
    driver.get("https://weibo.com/login.php")  # 跳转至百度首页
    sleep(1)
    element = driver.find_element_by_id("login_form_savestate")
    print(element.is_displayed())  # True
    print(element.is_enabled())  # True
    print(element.is_selected())  # True
    element.click()  # 点击
    print(element.is_selected())  # False
    
    driver.quit()
    

    WebElement.value_of_css_property()

    获取元素的 css 属性值:

    from selenium import webdriver
    from time import sleep
    
    driver = webdriver.Chrome()  # 打开浏览器
    driver.maximize_window()  # 浏览器最大化
    driver.get("https://www.baidu.com/")  # 跳转至百度首页
    sleep(1)
    element = driver.find_element_by_id("su")  # 定位搜索按钮
    print(element.value_of_css_property("cursor"))  # pointer
    print(element.value_of_css_property("background-color"))  # rgba(78, 110, 242, 1)
    print(element.value_of_css_property("border-radius"))  # 0px 10px 10px 0px
    print(element.value_of_css_property("color"))  # rgba(255, 255, 255, 1)
    
    driver.quit()
    

    总结

    展开全文
  • 当我们使用 Selenium 的定位方法定位到元素之后,会返回一个 WebElement 对象(<class 'selenium.webdriver.remote.webelement.WebElement'>),该对象用来描述 Web 页面上的一个元素,那么,关于元素的常用...
  • 爬虫 获取WebElement内容

    千次阅读 2020-08-10 21:50:13
    爬取 response_comment = browser.get(title_urls) parameter_list = browser.find_elements_by_xpath('//*[@id="detail"]/div[2]/div[1]/div[1]/ul...selenium.webdriver.remote.webelement.WebElement (session="d
  • webelement类的方法

    2019-07-25 18:16:16
    webelement类的方法 webelement类的方法,常用的汇总如下: clear()清空 例如登录时先清空输入框中的内容 driver.find_element_by_id('username').clear() click(),单击 例如点击登录按钮 driver...
  • Selenium学习 - WebElement接口 WebElement对象代表了一个DOM元素。 一、WebElement的属性 tag_name --- 元素的tagName属性 text --- 元素的文本内容 location_once_scr...
  • Java 根据WebElement来获取截图 最近再进行自动化的测试中需要截取部分的图,而不是全图,所以刚好记录下来。也不造轮子了,直接上代码。 public static byte[] CaptureByElement(WebElement element, WebDriver ...
  • 这里从我们team的代码中来总结下常见的几...(1)通过WebElement的ID 如果某个WebElement提供了ID, <input type="text" name="passwd"id="passwd-id" /> (2)通过WebElement的name查找: WebElement element = ...
  • 学习日记【selenium】WebElement findElement 查找元素返回第一匹配 driver.get("https://www.baidu.com"); WebElement oneElement = driver.findElement(By.name("wd")); oneElement.sendKeys("北京"); ...
  • 在使用 webDriver 的find方法定位到元素后,会返回一个 webElement对象,该对象用来描述web页面上的一个元素 from selenium import webdriver from time import sleep class TestElement01(object): def __init__...
  • webelement相对定位法

    2019-01-11 11:05:53
    webelement相对定位法 比如我想获取id为food的元素,然后用获取到元素继续找它下面的子节点,比如我想获取p节点,通过xpath表达式 //p来获取 然后,这里大家注意,如果我这么写了,即使我用的是food这个元素来获取...
  • WebElement的常用API

    千次阅读 2018-08-17 14:54:21
    1、sendKeys() 通过sendKeys我们可以向输入框...WebElement element = driver.findElement(By.id("kw"));//定位input输入框 //1、sendkeys element.sendKeys("柠檬班");//向输入框发送内容 ...
  • 这里从我们team的代码中来总结下常见... (1)通过WebElement的ID  如果某个WebElement提供了ID,  <input type="text" name="passwd"id="passwd-id" />  (2)通过WebElement的name查找:  WebElement eleme...
  • webelement对象操作 webelement对象是selenium中所有元素的父类,也就是webelement对象拥有的方法,其它元素对象都会有; 只是不同的对象在调用特定方法时,效果是不一样的,即: 某些方法只是针对特定元素类型有效...
  • Post Link : https://www.skptricks.com/2018/03/selenium-webdriver-and-webelement-commads-action.html WebDriver是一个Web自动化框架,&...
  • 解决move_to requires a WebElement

    千次阅读 2020-10-22 00:49:30
    解决move_to requires a WebElement 今天在做动作链的时候(鼠标移动到指定位置),报了一个错误:move_to requires a WebElement,意思是找不到目标,查看代码browser.get('...
  • Right Click on WebElement in Selenium Here are 2 ways of perform a right click on WebElement in Selenium automation. use Actions use Javascript Here is a code example in C#: public static void Right...
  • WebElement接口获取值

    2017-09-03 00:27:00
    通过WebElement接口获取值  size 获取元素的尺寸  text 获取元素的文本  get_attribute(name) 获取属性值  location 获取元素坐标,先找到要获取的元素,再调用该方法  page_source 返回页面源码  ...
  • 第七周 高级Web驱动程序和Web元素类的属性和属性 ...使用WebDriver和WebElement类的各种方法和属性来实现与应用程序交互的测试 使用Select类自动执行下拉列表和列表 自动执行JavaScript警报和浏览器导航 HTML表单的
  • webelement接口常用方法

    千次阅读 2017-04-19 15:57:17
    #webElement接口常用方法 #clear():清除文本框中的内容 #send_keys():模拟键盘输入 #click():单击按钮,可以被点击的元素; #可以是任何可以点击的文字、图片链接,单选框,复选框,下拉框 #submit():提交表单,...
  • 通过WebElement接口获取值  size 获取元素的尺寸  text 获取元素的文本  get_attribute(name) 获取属性值  location 获取元素坐标,先找到要获取的元素,再调用该方法  page_source 返回页面源码  driver....
  • QTP 处理 WebElement 对象

    千次阅读 2012-11-14 11:28:26
    QTP 中 WebElement 对象未提供 set 操作, 但是实际项目中会碰到很多。 类似于论坛发帖的编辑框会被识别为 WebElement 对象, 而 WebElement 对象不提供 set 操作, 当然可以通告模拟键盘发送来达到效果, 那毕竟是...
  • WebElement是一个接口。RemoteWebElement实现了WebElement接口。 MobileElement 是WebElement的子类并且添加了appium中更具体的一些特性。 AndroidElement和IOSElement实现了MobileElement, 并且各自加了自己...
  • webdriver 中比较常用WebElement接口常用方法: clear 清除元素的内容,如果可以的话 send_keys 在元素上模拟按键输入 click 单击元素 submit 提交表单 size 返回元素的尺寸 text 获取...
  • WebElement目录结构 该模块提供了WebElement类,主要用于操作web DOM元素,提供的常用API有: 方法 描述 实例代码 clear() 清空 element.clear() click() 单击 element.click() get_attrbute() 获取...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,597
精华内容 5,038
关键字:

webElement