Ruby watir无法找到类型为“的元素”;文件";

Ruby watir无法找到类型为“的元素”;文件";,ruby,watir,watir-webdriver,Ruby,Watir,Watir Webdriver,页面上的html包含: <input type="File" name="File" size="70" value="" class="inputfield_en"> 但我得到: .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

页面上的html包含:

<input type="File" name="File" size="70" value="" class="inputfield_en">
但我得到:

   .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)。如何修复?

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

@browser.file_field(:name=>"File")
更新:您似乎在watir webdriver中遇到了一个错误,
file\u字段
仅选择一个小写的
type=“file”
字段。您可能希望尝试更通用的选择方法:

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

当然,如果名称不唯一,:类也可以工作。因此,如果页面上只有一个文件输入标记,那么您可能不需要任何选择器(与:index=>0相同)。我首先尝试了最少的选择器,然后是2,然后是3。stackoverflow的帖子是在尝试了所有3个版本后发布的。听起来像是这个问题,但最近没有相关活动。如果问题是HTML中指定的类型,那么我们需要在webdriver或watir webdriver中解决,因为根据HTML4标准,这些类型规范是CI(不区分大小写)请参阅:作为调试和/或诊断步骤,您可以尝试执行“put@browser.file_fields.size”(应该=页面上文件输入字段的数量)与
@browser.file_fields(:name=>'file')。size
等。是的,不太好。我认为这是一个问题,请参阅上的评论以了解可能的解决方法。它在技术上是有效的HTML,即使我见过99%以上的HTML在定义“type”属性时从未使用过大写字母,我在任何书籍或教程(甚至HTML规范)中也从未见过这样做的例子。除非他们能找到一种方法来解决这个问题而不会对性能造成负面影响,否则我怀疑这可能不会得到解决,因为相对于bug影响的少数人的利益而言,每个人的“成本”都太高了。我会问开发人员是否可以将这些东西小写以提高可测试性。这是一个简单的解决方案,如果它能在测试方面节省时间,那么它对业务的价值将使它非常值得一做。
@browser.element(:xpath => '//input[@type="File"]')