2011-12-16 28 views
2

页面上的HTML包含:的Watir无法找到类型为元素的“文件”

<input type="File" name="File" size="70" value="" class="inputfield_en"> 

我正在尝试设置使用红宝石(1.9.2)和的Watir-的webdriver(0.3的值。 5)

@browser.file_field(:type=>"File",:name=>"File",:class=>"inputfield_en").to_subtype.set("#{Dir.pwd}/status_feed_for_test.xml") 

,但我得到:

.rvm/gems/ruby-1.9.2-p290/gems/watir-webdriver-0.3.5/lib/watir-webdriver/elements/element.rb:248:in `assert_exists': unable to locate element, using {:type=>"file", :name=>"File", :class=>"inputfield_en", :tag_name=>"input"} (Watir::Exception::UnknownObjectException) 

这是因为HTML包含类型文件用大写字母 “F”? (我没有控制HTML)。怎么修?

+0

如果问题是在HTML被指定的类型,那么这是我们需要在任何webdriver的或的Watir-webdriver的,因为每HTML4标准的类型规格修复某些东西是CI(不区分大小写)请参阅:http://www.w3.org/TR/html4/interact/forms.html#h-17.4 –

+0

作为调试和/或诊断步骤,您可以尝试执行此操作'puts @browser。 file_fields.size'(should =页面上文件输入字段的数量)vs'@ browser.file_fields(:name =>'File')。size'等。 –

+0

测试输出“0” – Homan

回答

3

在watir中,您只需指定尽可能多的选择器来唯一标识元素。在这种情况下,您可能只需要:name

@browser.file_field(:name=>"File") 

更新:看样子,你遇到的Watir-webdriver的一个错误,这错误file_field只选择与小写type="file"的字段。你可能想尝试一个更通用的选择方法:

@browser.element(:xpath => '//input[@type="File"]') 
+0

:class也可以工作。对于这个问题,如果页面上只有一个文件输入标签,那么你可能不需要任何选择器(与index => 0相同) –

+0

我首先尝试了最小的选择器,然后是2,然后是3。在尝试所有3. – Homan

+1

听起来像这个问题,https://github.com/jarib/watir-webdriver/issues/72,但没有最近的活动。 – Homan