当前位置: 首页 > wzjs >正文

做网站推广对电脑有什么要求在线免费设计logo

做网站推广对电脑有什么要求,在线免费设计logo,搜索app下载安装,网站用户投稿怎么做frame切换/窗口切换 前言 切换到frame 原因 解决 切换回原来的主html 切换到新的窗口 问题 解决 回到原窗口 法一 法二 示例 前言 参考教程:Python Selenium Web自动化 2024版 - 自动化测试 爬虫_哔哩哔哩_bilibili 上期文章:Sel…

frame切换/窗口切换

前言

切换到frame

原因

解决 

切换回原来的主html 

切换到新的窗口 

问题 

解决 

回到原窗口 

法一 

法二 

示例


前言

参考教程:Python + Selenium Web自动化 2024版 - 自动化测试 爬虫_哔哩哔哩_bilibili

上期文章:Selenium-Java版(css表达式)-CSDN博客

切换到frame

运行代码

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;import java.time.Duration;
import java.util.List;
import java.util.Scanner;public class Main {public static void main(String[] args) {// 创建WebDriver对象WebDriver wd = new EdgeDriver();wd.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));// 访问目标网页wd.get("https://www.byhy.net/cdn2/files/selenium/sample2.html");// 根据class name选择元素,返回的是一个列表List<WebElement> elements = wd.findElements(By.className("plant"));// 遍历列表并打印每个元素的文本内容for (WebElement element : elements) {System.out.println(element.getText());}// 创建Scanner对象等待用户输入Scanner scanner = new Scanner(System.in);System.out.println("等待回车键结束程序");scanner.next();// 关闭浏览器wd.quit();}

发现并没有打印元素的文本内容

原因

这些元素是在一个叫iframe的元素中的 

frame元素或者iframe元素的内部会包含一个被嵌入的另一份html文档。使用selenium打开一个网页的操作范围并不包含被嵌入的html文档里面的内容。

解决 

操作被嵌入的html文档中的元素,需要切换操作范围被嵌入的文档中。

使用 WebDriver 对象的switchTo属性,三选一:

括号内填id 

wd.switchTo().frame("frame1");

括号内填class属性值

wd.switchTo().frame("innerFrame");

括号内填frame对应的WebElement对象 

wd.switchTo().frame(wd.findElement(By.tagName("iframe")));

上面例子的正确代码

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;import java.time.Duration;
import java.util.List;
import java.util.Scanner;public class Main {public static void main(String[] args) {// 创建WebDriver对象WebDriver wd = new EdgeDriver();wd.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));// 访问目标网页wd.get("https://www.byhy.net/cdn2/files/selenium/sample2.html");// 切换到名为 'frame1' 的 framewd.switchTo().frame("frame1");// 根据class name选择元素,返回的是一个列表List<WebElement> elements = wd.findElements(By.className("plant"));// 遍历列表并打印每个元素的文本内容for (WebElement element : elements) {System.out.println(element.getText());}// 创建Scanner对象等待用户输入Scanner scanner = new Scanner(System.in);System.out.println("等待回车键结束程序");scanner.next();// 关闭浏览器wd.quit();}
}

运行框打印出了内容

切换回原来的主html 

wd.switchTo().defaultContent();

假如操作完frame里面的元素后,需要点击主html里面的按钮 

运行代码 

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;import java.time.Duration;
import java.util.List;
import java.util.Scanner;public class Main {public static void main(String[] args) {// 创建WebDriver对象WebDriver wd = new EdgeDriver();wd.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));// 访问目标网页wd.get("https://www.byhy.net/cdn2/files/selenium/sample2.html");// 根据name属性值 'innerFrame',切换到iframe中wd.switchTo().frame("innerFrame");// 根据 class name 选择元素,返回的是 一个列表List<WebElement> elements = wd.findElements(By.className("plant"));// 遍历列表并打印每个元素的文本内容for (WebElement element : elements) {System.out.println(element.getText());}// 切换回 最外部的 HTML 中wd.switchTo().defaultContent();// 然后再 选择操作 外部的 HTML 中 的元素wd.findElement(By.id("outerbutton")).click();// 创建Scanner对象等待用户输入Scanner scanner = new Scanner(System.in);System.out.println("等待回车键结束程序");scanner.next();// 关闭浏览器wd.quit();}
}

查看自动打开的网站

切换到新的窗口 

问题 

运行代码

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;import java.time.Duration;
import java.util.Scanner;public class Main {public static void main(String[] args) {// 创建WebDriver对象WebDriver wd = new EdgeDriver();wd.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));// 访问目标网页wd.get("https://www.byhy.net/cdn2/files/selenium/sample3.html");// 点击打开新窗口的链接WebElement link = wd.findElement(By.tagName("a"));link.click();// wd.getTitle()方法是当前窗口的标题栏文本System.out.println(wd.getTitle());// 创建Scanner对象等待用户输入Scanner scanner = new Scanner(System.in);System.out.println("等待回车键结束程序");scanner.next();// 关闭浏览器wd.quit();}
}

运行框

虽然打开了新窗口,但输出的不是新窗口标题,而是老窗口的标题

解决 

点击链接和输出标题的中间加入如下代码

        // 获取所有窗口句柄Set<String> windowHandles = wd.getWindowHandles();// 遍历所有窗口句柄for (String handle : windowHandles) {// 先切换到该窗口wd.switchTo().window(handle);// 得到该窗口的标题栏字符串,判断是不是我们要操作的那个窗口if (wd.getTitle().contains("Microsoft")) {// 如果是,那么这时候WebDriver对象就是对应的该窗口,正好,跳出循环break;}}

运行框 

回到原窗口 

法一 

和切换新窗口用同样的方法,只需换一行代码 

wd.getTitle().contains("白月黑羽")

法二 

遍历窗口句柄之前,提前保存当前窗口句柄

        // mainWindow变量保存当前窗口的句柄String mainWindow = wd.getWindowHandle();

新窗口操作完后,将driver对应的对象返回到原来的窗口 

        // 通过前面保存的老窗口的句柄,自己切换到老窗口wd.switchTo().window(mainWindow);

示例

运行代码

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;import java.time.Duration;
import java.util.Scanner;
import java.util.Set;public class Main {public static void main(String[] args) {// 创建WebDriver对象WebDriver wd = new EdgeDriver();wd.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));// 访问目标网页wd.get("https://www.byhy.net/cdn2/files/selenium/sample3.html");// mainWindow变量保存当前窗口的句柄String mainWindow = wd.getWindowHandle();// 点击打开新窗口的链接WebElement link = wd.findElement(By.tagName("a"));link.click();// 获取所有窗口句柄Set<String> windowHandles = wd.getWindowHandles();// 遍历所有窗口句柄for (String handle : windowHandles) {// 先切换到该窗口wd.switchTo().window(handle);// 得到该窗口的标题栏字符串,判断是不是我们要操作的那个窗口if (wd.getTitle().contains("Microsoft")) {// 如果是,那么这时候WebDriver对象就是对应的该窗口,正好,跳出循环break;}}// 打印当前窗口的标题栏文本System.out.println(wd.getTitle());// 通过前面保存的老窗口的句柄,自己切换到老窗口wd.switchTo().window(mainWindow);// 打印切换回老窗口后的标题栏文本System.out.println(wd.getTitle());// 创建Scanner对象等待用户输入Scanner scanner = new Scanner(System.in);System.out.println("等待回车键结束程序");scanner.next();// 关闭浏览器wd.quit();}
}

运行框

不仅仅适用于最初的老窗口,操作期间打开的其他窗口都可以保留其窗口句柄 


文章转载自:

http://k2VEeXSP.rqfkh.cn
http://rKCeRwWy.rqfkh.cn
http://92p74JIv.rqfkh.cn
http://SyeFhfEz.rqfkh.cn
http://xDZudhFd.rqfkh.cn
http://yLYdPfDY.rqfkh.cn
http://QqYqKgfo.rqfkh.cn
http://gfk0hwKZ.rqfkh.cn
http://LNtsVnNR.rqfkh.cn
http://fRjHGw5e.rqfkh.cn
http://eBdmUVr3.rqfkh.cn
http://jKUhlB4Z.rqfkh.cn
http://4FHa55IK.rqfkh.cn
http://4J2Aafbn.rqfkh.cn
http://0NUKpqpm.rqfkh.cn
http://PJO69AcO.rqfkh.cn
http://YRlbzEQf.rqfkh.cn
http://xsBmnwx3.rqfkh.cn
http://fiBRdpZl.rqfkh.cn
http://xXpXl7eS.rqfkh.cn
http://VlKX2WfH.rqfkh.cn
http://qyW6DIba.rqfkh.cn
http://ANzpUHMD.rqfkh.cn
http://6X2wLQp1.rqfkh.cn
http://mleNbKZy.rqfkh.cn
http://M9XoiI5V.rqfkh.cn
http://W8SwB4AP.rqfkh.cn
http://clxW9DFR.rqfkh.cn
http://Dj6FbInX.rqfkh.cn
http://0R0L4iKC.rqfkh.cn
http://www.dtcms.com/wzjs/641491.html

相关文章:

  • 哪里能给人做网站国家高新技术企业认定的要求
  • 湖北定制型网站建设网站首页排版
  • 凡科互动投票破解阿里云wordpress优化
  • 山东建设工程管理局网站建筑网格图绘制
  • 石家庄网站制作哪家好上海招聘网官网
  • 企业网站建设选题背景百度竞价推广有哪些优势
  • 个人网站建设方案书备案深圳较便宜的网站建设
  • 长沙网站托管seo优化公司flash个人网站模板
  • 下载官方购物网站自我介绍ppt配图
  • 美食网站建设方案怎样做一个网站平台
  • 网站系统建设目标范本房管局
  • 滨江道做网站公司node.js做网站开发
  • 石家庄网站系统建设河南省建设监理协会网站人才十
  • 局域网电脑做网站服务器青岛建网站
  • 新楼盘网站模板动漫制作专业有哪些课程
  • 天津重型网站建设推荐织梦 网站无法显示该页面
  • 1小时快速搭建网站新乡网络公司推荐
  • 购物网站设计需要哪些模块兔展制作h5页面模板
  • 电商网站建设实施方案东莞建站公司速推全网天下首选
  • 最好的网站开发公司wordpress悬浮联系表
  • 官方网站建设的必要四川人力资源考试官网二建
  • 网站单页在线怎么开网页游戏平台
  • 哪些网站可以免费做产品推广东莞建设局网
  • 门户网站cms程序中建集团
  • 南阳网站建设的公司百度排名优化工具
  • 小城市门户网站建设方案详情页设计怎么收费
  • 有没有专门发布毕业设计代做网站天津设计公司排名榜
  • 相册管理网站模板下载失败国家林业工程建设协会网站
  • 2015年做哪些网站致富求个网站填空题
  • 做外贸家纺资料网站佛山建站模板搭建