首页 > 其他分享 >.NetCore + Selenium IIS 部署踩坑记

.NetCore + Selenium IIS 部署踩坑记

时间:2023-08-05 12:22:44浏览次数:33  
标签:坑记 IIS -- Selenium chromedriver process new 日志 options

一、问题 

    使用Selenium+chromedriver开发自动操作页面demo,本地调试使用IIS Express正常,
部署到IIS 访问接口代码正常执行,但是,但是页面并没有启动

二、排查

   网上找相似情况大概以下几种

  1,chromedriver和chrome 的版本不一致
  2,IIS用户权限
  3,代码写法问题

  本地可以正常启动版本-----排除,
  重新设置IIS站点权限还是无法启动---排除

三、误区与转机

  本次排查过程中一大误区:本地可以运行=代码没有问题;

  换一个方向;查看chromedriver和selenium官网看看这两个玩意的详细参数

  ChromeDriver官网:https://chromedriver.chromium.org/security-considerations

      这个文章详细说明ChromeDriver 只允许本地连接。如果您需要从远程主机连接到它,请在命令行上使用 --allowed-ips 开关来指定允许连接到 ChromeDrive 的 IP 地址列表。  

 首先:在CMD中执行,chromedriver.exe --port=8012 --whitelisted-ips="127.0.0.1" 设置白名单的地址和端口号
 然后IWebDriver 使用RemoteWebDriver进行实例
 ChromeOptions options = new ChromeOptions();
 options.BinaryLocation = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe";
 options.AddArgument("--start-maximized");
 IWebDriver driver = new RemoteWebDriver(new Uri("http://127.0.0.1:8012"), options);
 注意:

1,ChromeDriver很多版本参数命名不太一样,上面那个命令不一定好使,建议使用 chromedriver.exe --h 查看所有参数
 本次版本参数如下:  

--port=要侦听的port端口

--adb端口=端口adb服务器端口

--log path=FILE将服务器日志写入文件而不是stderr,将日志级别增加到INFO

--log level=level设置日志级别:ALL、DEBUG、INFO、WARNING、SEVERE、OFF

--verbose日志verbosely(相当于--log level=ALL)

--无提示日志(相当于--log level=OFF)

--追加日志追加日志文件而不是重写

--可重放的(实验性的)日志,并且不要截断长字符串,以便可以重放日志。

--version打印版本号并退出

--url base命令的基本url路径前缀,例如wd/url

--可读时间戳将可读时间戳添加到日志

--enablechrome日志显示浏览器中的日志(覆盖其他日志记录选项)

--allowed ips=LIST允许连接到ChromeDriver的远程IP地址的逗号分隔的allowelist

--allowed-origins=LIST允许连接到ChromeDriver的请求来源的逗号分隔的allowlist。使用“*”允许任何主机来源都是危险的!


2,注意设置了白名单后不要关闭CMD命令窗口

3,注意白名单端口不要冲突且不要使用ChromeDriver 默认的端口
 执行 chromedriver.exe --h 后可以看到端口

 

四、关键代码

 

        /// <summary>
        /// 初始化驱动器
        /// </summary>
        /// <param name="driver"></param>
        public static IWebDriver Init(this IWebDriver driver)
        {
            if (driver == null)
            {
                InitProcess();
                ChromeOptions options = new ChromeOptions();
                options.BinaryLocation = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe";
                options.AddArgument("--start-maximized");
                driver = new RemoteWebDriver(new Uri("http://127.0.0.1:8012"), options);
            }            
            return driver;
        }

        /// <summary>
        /// 初始化端口和IP白名单
        /// </summary>
        private static void InitProcess()
        {
            var name = "cmd.exe";
            var process = new Process(); // 创建一个Process类对象
            process.StartInfo.FileName = name; // 设置进程的可执行文件
            process.StartInfo.UseShellExecute = false; // 是否使用操作系统shell启动进程
            process.StartInfo.CreateNoWindow = true; // 是否在新窗口中启动进程
            process.StartInfo.RedirectStandardInput = true; // 是否重定向输入
            process.StartInfo.RedirectStandardOutput = true; // 是否重定向输出
            process.StartInfo.RedirectStandardError = true; // 是否重定向错误输出
            process.StartInfo.StandardOutputEncoding = System.Text.Encoding.UTF8; // 输出编码方式
            process.Start(); // 启动进程
            process.StandardInput.WriteLine("chromedriver.exe --port=8012 --whitelisted-ips=\"127.0.0.1\""); // 向CMD进程写入命令
        }

 



 

 


  

 

 

 


  

 

 

 

 

 

标签:坑记,IIS,--,Selenium,chromedriver,process,new,日志,options
From: https://www.cnblogs.com/NewInfo/p/17607654.html

相关文章

  • IIS回收调优
    由于IIS本身机制的问题,网站会在闲时回收或者固定时间间隔回收,但因为回收后,第一次访问很慢,线上会出现很多超时报警,所以需要修改设置:AwalysRuning此设置用于保证应用程序池回收后立即启动。固定时间回收IIS的固定时间回收为29个小时,将图中的设置改为0即可禁用固定间隔回收......
  • 小米6 MIUITR踩坑记录
    前几天看到一个刷机包,号称修复了米6的NFC功能,即可以正常使用交通卡了。眼馋良久的功能终于可以使用,这不得赶紧开刷。顺便开个贴,记录遇到的坑,防止忘记,下次再陷进去。1.刷机材料大佬提供的MIUITr刷机包miui12.5_Android10+本地化模块21.11.10 2.更换第三方Rec由于原帖评论区出......
  • 金蝶云不重启iis开发插件
    1、打开WebSite\App_Data\Common.config,修改appSettings,设置IsEnablePlugInHotUpdate为true,重启IIS;若appSetting中没有IsEnablePlugInHotUpdate,可自行添加;  <!--是否启用插件热更新(开发时启用,正式服务器必须设为false,以免影响性能)--><addkey="IsEnablePlugInHotUpdate"va......
  • IIS JupyterLab
    有台Windows云服务器性能有些闲置,拿来做笔记用。jupyterlab安装都会,IIS安装也应该都会,不会也不用看了,浪费时间而已。IIS在功能中选择上websocket安装两个功能插件url重写url-rewriteARRARR配置ARR其它的东西照着提示配,没有难点。配置Jupyter创建配置文件jupyterser......
  • Eclipse转IDEA开发java项目spring+mybaits项目踩坑记录
    久了不用一个东西总有遗忘,记录是你快速找回状态之本。今天将原来eclipse写的spring+mybatisDemo在idea上跑起来,花了不少时间。这里将坑记录下:一、IDEA创建项目   1.IDEA中项目project等价于Eclipse中workspace, eclipse的workspace中可以创建多个工程;在IDEA中达到相......
  • IIS创建网站报错 \\?\C:\Windows\inetsrv\config\applicationHost.config
    ​ ​​编辑​​编辑 现象:IIS创建不了网站,IIS配置没有发生改变 原因:服务器C盘无空间,释放空间后问题解决。​......
  • 【selenium】获取token及session数据
    UI测试过程中遇到系统其他页面需要登录鉴权,不能每次打开页面都重新进行登录,所以需要保存登录用例时的tokendefsave_session(self,value):"""1.其中localStorage、token关键字是需要根据自己实际情况填写的localStorage:目标系统,需要查看自己的token是存在localStor......
  • 爬虫基本工具:urllib丶requests丶selenium丶pytesseract
    urllib来实现cookie和ip代理1fromurllib.requestimportRequest,build_opener,urlopen2fromfake_useragentimportUserAgent3fromurllib.parseimporturlencode4fromurllib.requestimportHTTPCookieProcessor5fromhttp.cookiejarimportCookieJ......
  • java selenium 截取图片
    JavaSelenium截取图片在自动化测试中,截图是一个非常重要的功能。当测试遇到问题时,截图可以提供有价值的信息来帮助我们分析问题的原因。JavaSelenium提供了一个简单而强大的方法来实现截图功能。本文将介绍如何使用JavaSelenium来截取网页或应用程序的屏幕截图。准备工作在......
  • java selenium po模式
    JavaSeleniumPO模式引言在软件测试领域,自动化测试是一个关键的环节。自动化测试可以提高测试效率、降低测试成本,并且可以帮助团队更好地管理测试用例。Selenium是一个强大的自动化测试工具,可以用于测试Web应用程序。在使用Selenium进行自动化测试时,我们可以采用PageObject(PO)......