怎么获取iframe里面的元素_Web定位特殊元素处理

一、下拉框选择

     下拉框选择分非Select元素和Select。有些下拉框没有Select需要单独进行处理。

1、非Select元素

处理非Select元素的下拉框时直接选择需要定位的元素直接进行定位,然后触发点击即可

怎么获取iframe里面的元素_Web定位特殊元素处理_第1张图片

2、Select下拉框

     如果页面元素是一个Select元素的下拉框,我们需要将元素封装为Select对象。

      Select select = new Select(WebElement element);

Select对象常用的API:

  • select.getOptions();                     //获取所有选项

  • select.selectByIndex(index);       //根据索引选择对应的元素

  • select.selectByValue(value);      //选择指定属性value值对应的选项

  • select.selectByVisibleText(text);//选中文本值对应的选项

  • select。isMultiple();                   //是否多选

怎么获取iframe里面的元素_Web定位特殊元素处理_第2张图片

二、切换Iframe

      如果一个页面中嵌套多个iframe页面,想要定位iframe元素,如果iframe的焦点还停留在原页面,我们在iframe新页面定位元素时,会无法定位到元素,需要我们将driver的焦点切换到iframe页面中。

iframe切换方式:

  1. 根据iframe的索引

    driver.switchTo().frame(index);

    2. 根据iframe的id

        driver.switchTo().frame(nameOrId);

    3. 根据iframe WebElement

        driver.switchTo().frame(WebElement)

    4. 跳转到父级iframe中

        driver.switchTo().parentFrame()

    5. 回到默认内容页面(否则会找不到元素)

       driver.switchTo().defaultContent(WebElement)

怎么获取iframe里面的元素_Web定位特殊元素处理_第3张图片

三、切换window窗口

      当点击标签元素时,会触发打开链接页面的事件,有两种情况:第一种为当前窗口加载新的页面内容;第二种为新建一个窗口加载新的页面内容,这种情况在a 标签有target="_blank" 时触发。第二种情况时需要切换窗口。

      1、切换方式:创建window对象

       driver.switchTo.window(nameOrHandle);

      2、获取窗口句柄

       driver.getWindowHandle();//获取当前操作窗口的句柄

       driver.getWindowHandles();//获取测试时打开的所有窗口句柄

怎么获取iframe里面的元素_Web定位特殊元素处理_第4张图片

怎么获取iframe里面的元素_Web定位特殊元素处理_第5张图片

四、切换Alert弹框

  1、获取alert弹框

       Alert alert = driver.switchTo.alert();

  2、常用API:

  • alert.getText(); //获取警告框中的提示信息

  • alert.accept(); //点击确认按钮

  • alert.dismiss(); //点击取消取消

怎么获取iframe里面的元素_Web定位特殊元素处理_第6张图片

五、鼠标操作

      自动化测试时,对于不适合直接点击或者进行某些特殊操作的元素,可以使用Selenium的Actions类来模拟鼠标键盘操作。

1、创建方式:创建Actions对象

       Actions actions = new Actions(driver);

2、  常用API:

  • clickAndHold() //单击鼠标左键不释放

  • release() //释放鼠标左键

  • doubleClick() //双击鼠标左键

  • moveToElement() //移动鼠标到指定元素

  • contextClick() //右键单击

  • dragAndDrop() //拖拽元素

  • perform() //执行具体的操作,前面6个方法只有调用perform()后才会真正执行操作

怎么获取iframe里面的元素_Web定位特殊元素处理_第7张图片

六、时间控件

1、非限制输入:指不限制手动输入,直接调用sendKeys方法写入时间数据

      直接进行元素定位,然后输入指定日期

fddb3d35966cce431cb6f2175d7fe05c.png

2、不能输入,则可以直接选择或使用JavaScript代码改变元素的value属性值

(1)、直接选择,通过元素定位进行逐步定位然后进行选择

(2)、利用JS删除readonly属性

            JavascriptExecutor jsExecutor = (JavascriptExecutor)driver;           jsExecutor.executeScript("document.getElementById('train_date').removeAttribute('readonly')");

怎么获取iframe里面的元素_Web定位特殊元素处理_第8张图片

七、JS操作

       声明:JavascriptExecutor jsExecutor = (JavascriptExecutor)driver;

       去除removeAttribute属性:

jsExecutor.executeScript("arguments[0].removeAttribute('readonly')",train_date);

      arguments[0]为占位符

怎么获取iframe里面的元素_Web定位特殊元素处理_第9张图片

八、使用js定位页面滑动

       使用element.scrollIntoView( ) 滚动到指定元素的位置

怎么获取iframe里面的元素_Web定位特殊元素处理_第10张图片

九、文件上传

1、使用sendKeys,使用前提为上传元素为input标签和type类型为file的文件

42fe2259b14f1957fd9de2573ddc821f.png

2、无法直接输入文件地址,需要使用第三方工具进行操作

(1)、首先安装AutoIT

(2)、打开 AutoIT Window Info 工具,选择窗口中要识别的元素(文件名后面的输入框以及打开按钮),识别元素后在Windows中可以查看Title。Control中可以看到ClassnameNN。

怎么获取iframe里面的元素_Web定位特殊元素处理_第11张图片

怎么获取iframe里面的元素_Web定位特殊元素处理_第12张图片

(3)、打开 SciTE Script Editor,开始进行脚本编写。

            脚本内容如下:

                       ;等待“打开”窗口 

                       WinWaitActive("打开")

                       ;休眠2秒 

                       Sleep(2000) 

                       ;在输入框中写入上传文件的路径 

                      ControlSetText("打开", "", "Edit1", "d:\java_auto\test.png")

                      ;休眠2秒 

                     Sleep(2000)

                     ;点击打开按钮 ControlClick("打开", "","Button1");

ControlSetText ( "title", "text", controlID, "new text" [, flag = 0] )

ControlSetText(“标题”,“文本”,controlID,“新文本” [,标志= 0])

(4)、脚本编写完成后可以点击Tools-Go运行一下脚本,运行脚本时需要打开上传文件的Windows窗口

怎么获取iframe里面的元素_Web定位特殊元素处理_第13张图片

(5)、选择 Complie Script to .exe 工具把脚本编译为 exe 文件

怎么获取iframe里面的元素_Web定位特殊元素处理_第14张图片

(6)、保存后的exe文件也可以直接双击运行,先打开上传文件的Windows窗口然后双击exe文件。

(7)、Java代码本地执行exe文件

怎么获取iframe里面的元素_Web定位特殊元素处理_第15张图片

你可能感兴趣的:(怎么获取iframe里面的元素)