我正在尝试单击使用Chosen JQuery库创建的Select Dropdown中的一个标记。
<select id="languagesSelect" data-placeholder="All languages" style="width: 302px; display: none;" class="chzn-done">
<option value="all">All languages</option>
<option value="en">English</option>
<option value="ar">Arabic</option>
<option value="zh_cn">Chinese (Simplified)</option>
<option value="zh_tw">Chinese (Traditional)</option>
</select><div id="languagesSelect_chzn" class="chzn-container chzn-container-single chzn-container-active" style="width: 302px;" title=""><a href="javascript:void(0)" class="chzn-single chzn-single-with-drop" tabindex="-1"><span>All languages</span><div><b></b></div></a><div class="chzn-drop" style="left: 0px; width: 300px; top: 30px;"><div class="chzn-search"><input type="text" autocomplete="off" style="width: 265px;"></div><ul class="chzn-results"><li id="languagesSelect_chzn_o_0" class="result-selected active-result highlighted" style="">All languages</li><li id="languagesSelect_chzn_o_1" class="active-result" style="">English</li><li id="languagesSelect_chzn_o_2" class="active-result" style="">Arabic</li><li id="languagesSelect_chzn_o_3" class="active-result" style="">Chinese (Simplified)</li><li id="languagesSelect_chzn_o_4" class="active-result" style="">Chinese (Traditional)</li><li id="languagesSelect_chzn_o_5" class="active-result" style="">Hungarian</li><li id="languagesSelect_chzn_o_14" class="active-result" style="">Italian</li><li id="languagesSelect_chzn_o_15" </ul></div></div>
</div>
以下是我尝试选择英语&#39;从下拉列表中:
field_language_select = Select(driver.find_element_by_id('languagesSelect'))
field_language_select.select_by_visible_text('English')
但是我收到此错误:
ElementNotVisibleException: element not visible: Element is not currently visible and may not be manipulated
(Session info: chrome=65.0.3325.181)
(Driver info: chromedriver=2.37.544315 (730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),platform=Windows NT 10.0.16299 x86_64)
我试过了:
WebDriverException: unknown error: cannot focus element
如何设法从该下拉列表中选择元素?
答案 0 :(得分:1)
通过隐藏真正的select语句并使用divs模拟它来选择作品。
您需要找到可以发送提示文本的输入字段,然后找到包含选项列表的div。获得列表后,单击该列表中的正确项目。
删除类似。您需要找到包含所选选项列表的div,然后单击正确的项目。
答案 1 :(得分:0)
你有一个例外,因为元素是不可见的,同样你需要等待片刻,直到元素准备好找到。您可以使用driver.sleep()
或Explicit Wait
方法找到它。
答案 2 :(得分:0)
您首先需要知道元素如何与用户交互。
在选择中,您需要先点击输入字段,然后在提供的框中输入您的密钥。
我就是这样做的(我使用的是 .Net)
var eleChosen = driver.FindElementById("BodyContent_Element_chosen");
eleChosen.Click();
var eleInput = eleChosen.FindElement(By.XPath(".//input"));
jenisNaskahDinas.SendKeys("First Choice");
jenisNaskahDinas.SendKeys(Keys.Tab);
答案 3 :(得分:-1)
由于SELECT
,您发布HTML时display: none
标记目前不可见。硒被设计成不与不可见元素相互作用。如果没有指向页面的链接,很难说解决方案是什么,但您需要像用户那样处理这个问题...用户会做什么来导致该下拉列表被暴露?一旦你搞清楚了,编写执行这些用户操作的代码就应该很好。