我刚刚开始使用Selenium和Chromedriver,如果没有Selenium的Chrome自动化扩展程序,我无法弄清楚如何启动它。这是必需的,因为由于公司政策,Chrome无法处理解压缩的扩展程序,而我的测试应用程序因此而给我一个例外。
我正在尝试
ChromeOptions options = new ChromeOptions();
options.AddArguments("disable-extensions");
IWebDriver driver = new ChromeDriver(options);
然而它失败了,因为我已经阅读了整个代码不能在
之下public partial class Form1 : Form
我必须把它的一部分放在一个方法中。我可以这样做,但如果我把
IWebDriver driver = new ChromeDriver(options);
在不直接在我的Form1类中的任何地方,然后我在各种点击事件下的引用无法看到我在那里定义的'driver'对象。
我搜索了很多,但无法弄清楚如何构造代码,以便它可以正确读取选项参数,并以其他引用可以找到的方式创建驱动程序对象。我非常感谢完整的例子,因为其他相关主题没有为我解答。
谢谢
更新:
问题是我无法编译代码,这完全是由于需要使用参数启动ChromeDriver。没有参数它都可以工作,但遗憾的是我需要它,但是我迷失了如何以一种不直接在类中创建对象的方式构造代码,而单击事件可以引用它。
-
如果我尝试在Form1类下创建对象,我无法将参数传递给它,没有它完美的那些。我已经读过它,如果我想向ChromeDriver添加参数,就不能简单地在类下声明它。
例如,如果我在Form1_Load事件下输入,它可以理解参数并使用这些参数打开浏览器窗口,但是我的各种按钮的点击事件无法看到我在Form1_load下创建的ChromeDriver驱动程序,我得到“xxx在当前的背景下不存在“。
还尝试将其全部放在
中public ChromeDriver mymethod()
方法,有
返回司机;
因为它是返回值。在这种情况下,我可以在我的按钮单击事件中调用该方法,但由于新的ChromeBrowser obkect是在该方法中定义的,因此每次单击按钮执行某些操作时,它会创建新的浏览器窗口,因为创建对象的代码运行再次。试图在方法中放入一个IF,但它失败了,因为我不能
return driver;
ELSE链上的也没有在该链中创建新的ChromeBrowser对象,这导致又打开了一个窗口。
如果有任何兴趣,我可以提供要查看的代码。