使用硒浏览器自动化时如何避免访问被拒绝

时间:2020-09-25 10:00:08

标签: c# selenium

我将尝试用示例代码来描述问题。这是C#中的代码,用于打开Chrome浏览器的实例并导航到nseindia.com:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;

namespace nseindia_selenium
{
    class Program
    {
        static void Main( string [ ] args )
        {
            ChromeOptions options = new ChromeOptions ();
            options.BinaryLocation = "C:\\Users\\Subhasis\\AppData\\Local\\Chromium\\Application\\chrome.exe";
            //options.AddAdditionalCapability ( "w3c" , true );
            options.AddArgument ( "no-sandbox" );
            options.AddArgument ( "start-maximized" );
            options.AddArgument ( "disable-gpu");
            options.AddArgument ( "user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36" );
            options.AddExcludedArgument ( "enable-automation" );
            options.AddAdditionalCapability ( "useAutomationExtension" , false );
            //options.AddAdditionalCapability ( "chrome.page.customHeaders.referrer" , "https://www.nseindia.com" );
            ChromeDriver chrome1 = new ChromeDriver (options);
            chrome1.Navigate ().GoToUrl ( "https://www.nseindia.com/" );
        }
    }
}

到目前为止,似乎一切正常(并不是所有数据字段都为空)。但是在此阶段,如果我手动控制浏览器窗口并尝试浏览到nseindia.com的任何其他部分,则会收到错误消息: enter image description here

在这一点上,即使我尝试返回该网站的主页,也不允许我这样做。

此问题的最后答案建议手动设置引荐来源网址。但是当我这样做时,

options.AddAdditionalCapability ( "chrome.page.customHeaders.referrer" , "https://www.nseindia.com" );

它给我“无效参数”错误。另外,如果这是引荐来源的错误,也不能解释为什么手动单击链接无效。

过去的答案也建议使用

options.AddAdditionalCapability ( "useAutomationExtension" , false );

但这不再起作用,因为我收到以下消息:

[1601022727.512][WARNING]: Deprecated chrome option is ignored: useAutomationExtension
[1601022727.512][WARNING]: Deprecated chrome option is ignored: useAutomationExtension

过去,这是由于错误的w3c模式而发生的,但是我也无法再切换w3c模式。当我放

options.AddAdditionalCapability ( "w3c" , true );

我收到一条错误消息:

System.ArgumentException: 'There is already an option for the w3c capability. Please use the  instead.
Parameter name: capabilityName'

那我该怎么办?

0 个答案:

没有答案