繁体   English   中英

如何将属性设置为ChromeOptions类?

[英]How can I set the properties to ChromeOptions class?

我正在使用C#在Selenium WebDriver中编写脚本。 在脚本中,我正在从网页上下载一些文档,并且希望以动态路径下载它。 我正在使用ChromeOptions类及其方法来完成任务。 这是我的示例代码:

ChromeOptions options = new ChromeOptions();
options.AddUserProfilePreference("download.default_directory", "C:\Users\Desktop\MyDownloads");
IWebDriver driver = new ChromeDriver(@"C:\Users\chromedriver_win32\" , options);

如果我在函数启动时使用上面的代码,那么它可以正常工作。

但是,由于路径是动态的,因此我想在函数中间设置ChromeOptions类的属性。 因此,我只是使用字符串变量更改了硬编码路径,并将以下代码放在函数的中间

ChromeOptions options = new ChromeOptions();
options.AddUserProfilePreference("download.default_directory", strDownloadFinalPath);
IWebDriver driver = new ChromeDriver(@"C:\Users\chromedriver_win32\" , options);

现在,当我在函数中间或在运行时更新ChromeOptions时,它将创建另一个ChromeDriver实例并打开另一个chrome窗口。 它不会更新ChromeOptions类的属性。 我做了一些实验,例如从IChromeDriver类中删除chromedriver.exe的路径,但它开始出现以下错误:

chromedriver.exe文件在当前目录或PATH环境变量上的目录中不存在。

在代码中间设置ChromeOptions而不创建IWebDriver类的另一个实例的方法是什么?

您只能通过类构造函数设置ChromeOptions,从而设置下载路径。 实例化ChromeDriver后,没有任何属性可以更新。 因此,最后一个问题(“不创建另一个实例”)的答案是,您不能。

为此,我要做的就是检查Chrome中的“在下载前询问将文件保存在哪里”设置,然后在测试中与“另存为”对话框提示进行交互,输入完整的动态保存文件路径并单击“保存”。 问题是这是Windows对话框,Selenium无法与其交互。 我正在使用MS CodedUI来使用它。 我的另存为提示对话框类:

using Microsoft.VisualStudio.TestTools.UITesting.WinControls;

public class WindowsDialogBoxView : WinWindow
{
    public WindowsDialogBoxView()
    {
        this.SearchProperties[WinWindow.PropertyNames.ClassName] = "#32770";
    }

    public WinEdit FilenameEdit
    {
        get
        {
            this.filenameEdit = new WinEdit(this);
            this.filenameEdit.SearchProperties[WinEdit.PropertyNames.Name] = "File name:";
            return this.filenameEdit;
        }
    }
    private WinEdit filenameEdit;

用法:

WindowsDialogBoxView WindowsDialogBox = new WindowsDialogBoxView();
Keyboard.SendKeys(WindowsDialogBox.FilenameEdit, "C:\\myFileSavePath\\Blah\\FileToSave.abc");

我在与对话框的“保存”按钮进行交互时遇到困难,因此我使用Keyboard.SendKeys("{ENTER}"); 您可能需要在其中添加一些{TAB}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM