Selenium - Python - 选择 - 下拉菜单链接

Posted

技术标签:

【中文标题】Selenium - Python - 选择 - 下拉菜单链接【英文标题】:Selenium - Python - Select - drop-down menu links 【发布时间】:2018-08-06 13:52:16 【问题描述】:

我正在尝试循环浏览下拉菜单,其中每个元素都是指向不同页面的链接。我想循环浏览下拉菜单的所有元素,一次单击一个,转到它引导我到的页面,从该页面下载一些内容,然后单击下拉菜单(存在于每页)并转到菜单上的下一个选项。

这是下拉菜单的代码:

<div class="account-selection">
 <input type="hidden" name="fromResourceNode" value="/content/customer/my_account/jcr:content/mainpar/myaccount">
 <input type="hidden" name="extraTabInfo" id="extraTabInfo" value="">
 <input type="hidden" name="extraAccordionInfo" id="extraAccordionInfo" value="">
 <label for="selectAcct" class="hidden">Select your account</label>
 <select id="selectAcct" name="currAcctNumber">
   <option value="1001140692">1001140692, 4 BEECH </option>
   <option value="1001140648">1001140648, BEECH 3</option>
   <option value="1001257836">1001257836, 7C BEECH </option>
   <option value="1001265171">1001265171, 4E BEECH </option>
   <option value="1001238965">1001238965, 4D BEECH </option>

当我尝试使用时:

select = Select(browser.find_element_by_id('selectAcct'))
select.select_by_value('1001140648')
Keys.ENTER

无论出于何种原因,selenium 浏览器都没有被定向到实际单击链接将我带到的下一页。知道我做错了什么吗?我已经正确设置了所有导入,并且程序的其他所有内容都运行顺利。

另外,是否有任何简单的方法可以浏览整个下拉菜单,而无需手动填写实际的选项值?

谢谢!

【问题讨论】:

你能用更多的outerhtml更新这个问题吗? 我用更多的 HTML 更新了它。这样更好吗? 【参考方案1】:

Keys.ENTER 除了识别 ENTER 键之外并没有真正做任何事情。按下它,

select.send_keys(Keys.ENTER)

或者,如果选择在表单中,则执行

select.submit()

(您可以考虑将元素重命名为“select_account”以避免可能的混淆)。

另外,获取所有选项的列表:

available_options = select.options

然后您可以循环遍历(不过,我想知道您是否会在第一个之后在页面上遇到 StaleElementException...您可能需要先枚举它们,然后循环遍历它们)

【讨论】:

它告诉我“选择”没有“提交”属性。【参考方案2】:

根据您分享的 HTML,不确定为什么 浏览器没有被定向到下一页 也许您之前似乎试图调用 select_by_value() &lt;select&gt; 元素和 &lt;option&gt; 元素正确加载。因此,一种可能的解决方案是诱导 WebDriverWait 元素为 selectable,如下所示:

WebDriverWait(driver, 20).until(EC.element_to_be_selected((By.XPATH, "//select[@id='selectAcct' and @name='currAcctNumber']")))
select = Select(browser.find_element_by_xpath("//select[@id='selectAcct' and @name='currAcctNumber']"))
select.select_by_value('1001140648')

【讨论】:

以上是关于Selenium - Python - 选择 - 下拉菜单链接的主要内容,如果未能解决你的问题,请参考以下文章

python+selenium自动化测试——CSS选择元素

python+selenium自动化测试——CSS选择元素

使用 Python + Selenium 选择 iframe

使用 Selenium 和 Python 选择选项

Python Selenium选择带有空格的div类

selenium-Python之定位下拉框选择