c# - C# selenium webdriver 下拉错误:元素不可交互
问题描述
我是新的。我使用 C# 和 Selenium webdriver,我在下面的代码中遇到了这个下拉元素的问题。
<td class="FormFieldControl"><select name="ctl00$body$_Result$ddl" onchange="javascript:setTimeout('__doPostBack(\'ctl00$body$_Result$ddl\',\'\')', 0)" id="body__Result_ddl" class="DropDownList Chosen chzn-rtl chzn-done" style="display: none;">
<option selected="selected" value=""></option>
<option value="32">aaaaa</option>
<option value="64">bbbbb</option>
<option value="128">ccccc</option>
<option value="256">ddddd</option>
<option value="512">eeeee</option>
<option value="32768">fffff</option>
<option value="65536">ggggg</option>
</select><div id="body__Result_ddl_chzn" class="chzn-container chzn-rtl chzn-container-single" style="width: 561px;"><a href="javascript:void(0)" class="chzn-single"><span>Select one item</span><div><b></b></div></a><div class="chzn-drop" style="right: -9000px; width: 559px; top: 26px;"><div class="chzn-search"><input type="text" autocomplete="off" style="width: 524px;"></div><ul class="chzn-results"><li id="body__Result_ddl_chzn_o_1" class="active-result" style="">aaaaa</li><li id="body__Result_ddl_chzn_o_2" class="active-result" style="">bbbbb</li><li id="body__Result_ddl_chzn_o_3" class="active-result" style="">ccccc</li><li id="body__Result_ddl_chzn_o_4" class="active-result" style="">ddddd</li><li id="body__Result_ddl_chzn_o_5" class="active-result" style="">eeeee</li><li id="body__Result_ddl_chzn_o_6" class="active-result" style="">fffff</li><li id="body__Result_ddl_chzn_o_7" class="active-result" style="">ggggg</li></ul></div></div><span id="body__Result_rfv" style="display:none;"></span></td>
我的代码是:
var iframe11111 = drv.FindElement(By.XPath("/html/body/form/table/tbody/tr/td[3]/div/div[2]/div[2]/iframe"));
drv.SwitchTo().Frame(iframe11111);
drv.FindElement(By.XPath("/html/body/form/div[4]/div/div[4]/div[2]/div[2]/div/table/tbody/tr[1]/td[2]")).Click();
WebDriverWait wait = new WebDriverWait(drv, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.InvisibilityOfElementLocated(By.XPath("/html/body/form/div[4]/div/div[4]/div[2]/div[2]/div/table/tbody/tr[1]/td[2]/select/option[2]")));
IWebElement option = drv.FindElement(By.XPath("/html/body/form/div[4]/div/div[4]/div[2]/div[2]/div/table/tbody/tr[1]/td[2]/select/option[2]"));
drv.FindElement(By.XPath("/html/body/form/div[4]/div/div[4]/div[2]/div[2]/div/table/tbody/tr[1]/td[2]")).Click();
option.Click();
谁能帮我解决这个问题?
解决方案
感谢您的帮助罗加尼克。我用下面的代码做到了。
var iframe11111 = drv.FindElement(By.XPath("/html/body/form/table/tbody/tr/td[3]/div/div[2]/div[2]/iframe"));
drv.SwitchTo().Frame(iframe11111);
drv.FindElement(By.XPath("/html/body/form/div[4]/div/div[4]/div[2]/div[2]/div/table/tbody/tr[1]/td[2]")).Click();
Thread.Sleep(3000);
IWebElement Element = drv.FindElement(By.XPath("/html/body/form/div[4]/div/div[4]/div[2]/div[2]/div/table/tbody/tr[1]/td[2]/select"));
IJavaScriptExecutor js = drv as IJavaScriptExecutor;
js.ExecuteScript("arguments[0].style='display: block;'", Element);
Thread.Sleep(3000);
SelectElement select = new SelectElement(Element);
select.SelectByValue("32");
推荐阅读
- firebase - Firestore 标记数据模型最佳实践(数组与字典)
- pandas - 使用日期时间索引切片数据获取 emty 数据框
- android - 在 ViewPager 中暂停的片段不接收 LiveData 事件
- css - 为什么 Boostrap 4.4.1 媒体查询不起作用?
- python - 未找到添加到 virtualenv 'activate' 脚本的环境变量(mac)
- javascript - InfiniteCalendar 中 onSelect 的事件处理程序
- angularjs - 使用 AngularJS 在模态对话框中使用模板
- node.js - 在 linux 上运行 nfc-pcsc 示例不会触发任何事件
- colors - 如何更改拾轮器线条的颜色和粗细?(斯威夫特用户界面)
- android - 如何在没有 IV(初始化向量)的情况下使用 Cipher