我想使用绝对的XPath填充搜索栏。ID和类是动态生成的,没有名称变量或实例。因此,感觉就像我没有一个工具填充没有指定变量的工具。
有办法解决吗?我可以以某种方式更改绝对XPath以看起来像个名称分配,然后根据新的"类型"查询并填写我分配了绝对XPath?
?如果在Splinter中不可用的话,是否有一种方法?
我已经选择了CSS,我发现此错误'selenium.common.exceptions.invalidelementStateException:message:element:element当前无法交互,并且可能无法操纵'
编辑:
<div class="type-ahead-input-container" role="search">
<div class="type-ahead-input-wrapper">
<div class="type-ahead-input">
<label class="visually-hidden" for="a11y-ember10393">
Search
</label>
<!---->
<input id="a11y-ember10393" class="ember-text-field ember-view" aria-
autocomplete="list" autocomplete="off" spellcheck="false"
placeholder="Search" autocorrect="off" autocapitalize="off" role="combobox"
aria-expanded="true" aria-owns="ember11064" data-artdeco-is-focused="true"/>
<div class="type-ahead-input-icons">
<!---->
</div>
</div>
<!---->
</div>
</div>
正如您问的Is there a method for this in Selenium
时,答案是YES。
硒支持西库利。Sikuli可以自动在屏幕上看到的任何东西。它使用图像识别来识别和控制GUI组件。当无法轻松访问GUI的内部或源代码时,这很有用。
您可以在这里找到有关Sikuli的更多信息。
让我知道这是否回答了您的问题。
当您获得这样的错误消息时,可能是您的搜索结果不是您所期望的。可能是您获得的结果不止一个,即列表。在列表中,您无法输入。
您可以找到带有XPATH的输入框,从列表(通过尝试(中选择偏好的框,然后使用WebDreverlement _SET_VALUE方法在其中输入文本。这是不合适的,因为_是有用的。
input_list = browser.find_by_xpath('//div [@class =" type-ahead-input"]
input_list [1] ._ set_value('只是一个文本来查看它是否正在工作'(