使用 Selenium Web 驱动程序单击功能未单击 Telerik 打开文件对话框

Telerik Open File Dialogue not getting clicked using Selenium web driver click function

HTML & CSS 上面显示的代码 UI:

<span class="ruFileWrap ruStyled">
    <input type="text" class="ruFakeInput radPreventDecorate" id="ctl00_ContentPlaceHolder1_fileMgr_RadAsyncMultiUploadfakeInput0" size="22">
    <label for="ctl00_ContentPlaceHolder1_fileMgr_RadAsyncMultiUploadfakeInput0" style="display:none">label</label>
    <input type="button" tabindex="-1" value="Select" class="ruButton ruBrowse">
    <input type="file" tabindex="0" class="ruFileInput" multiple="multiple" 
           name="ctl00_ContentPlaceHolder1_fileMgr_RadAsyncMultiUploadfile0" id="ctl00_ContentPlaceHolder1_fileMgr_RadAsyncMultiUploadfile0" size="23">
    <label for="ctl00_ContentPlaceHolder1_fileMgr_RadAsyncMultiUploadfile0" style="display:none">label</label>
    </span>

观察:

文件上传功能是通过使用 Telerik 控件实现的

问题:

需要上传文件,但只要在“Select”按钮上执行 Selenium WebDriver 单击,就会出现以下错误

OpenQA.Selenium.NoSuchElementException: '没有这样的元素: 无法定位元素.

点击不同的元素会出现不同的错误。其中之一是 'Element is not clickable'

尝试打开文件对话的失败次数:

  1. 单击了 Select 按钮 ()

  2. 单击了文本框 ()

  3. 点击跨度 ()

  4. 已执行 JavaScript 点击所有上述元素

  5. 已尝试 driver.FindElement(By.Xpath("Xpath of Input Open file dialogue box")).SendKeys("FilePath");

我按照以下步骤解决了:

  1. 发现打开的文件对话框被隐藏了(因为 class ruFileInput)

<input type="file" tabindex="0" class="ruFileInput" multiple="multiple" name="ctl00_ContentPlaceHolder1_fileMgr_RadAsyncMultiUploadfile0" id="ctl00_ContentPlaceHolder1_fileMgr_RadAsyncMultiUploadfile0" size="23"> 

  1. 为了取消隐藏,我使用 JavaScript
  2. 删除了 ruFileInput class

document.querySelectorAll('input[type = file]')[0];
element.className = ' ';

  1. 然后执行正常的selenium web-driver点击就可以了