How to click on across browsers using Selenium Webdriver?


I’m working on dealing with a file-chooser dialog using Selenium 2 – WebDriver. Believe it or not, my problem is NOT dealing with the OS-native file-chooser. That part I can handle!

The problem is getting Selenium to properly click on the “Choose File” button. Since the original source html is simply <input type='file'>, the browser determines how to render it as a field and a button. As a result, the placement and naming of the button changes depending on browser. I’ve got it working in Chrome, but only because Chrome places the button on the leftmost alignment and Selenium happens to click there by default.

Any ideas? It’s not clear to me if an input of this type is truly navigable from within the DOM anyway…

  • You must to post comments

The proper way to upload a file on any OS is to

  1. Find the <input type='file'> element. You need not to worry about different implementations and exact positioning. Just find the element for example by xpath //input[@type='file']
  2. sendKeys() or type() (or whatever method writes text into elements in your language) the path to file to that input element.

Sample Java code:

// find the input element
WebElement elem = driver.findElement(By.xpath("//input[@type='file']"));
// 'type' the file location to it as it were a usual <input type='text' /> element

This works on every OS and browser in WebDriver.

  • You must to post comments
Showing 1 result
Your Answer
Post as a guest by filling out the fields below or if you already have an account.