我将尝试用示例代码来描述问题。这是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的任何其他部分,则会收到错误消息:
在这一点上,即使我尝试返回该网站的主页,也不允许我这样做。
此问题的最后答案建议手动设置引荐来源网址。但是当我这样做时,
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'
那我该怎么办?