繁体   English   中英

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

[英]Selenium - Python - Select - drop-down menu links

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

这是下拉菜单的代码:

<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

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

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

谢谢!

Keys.ENTER除了识别ENTER键实际上没有做任何事情。 按下它

select.send_keys(Keys.ENTER)

或者,如果选择为表单,则只需执行

select.submit()

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

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

available_options = select.options

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

根据您共享的HTMLselect_by_value() 不能确定为什么浏览器没有定向到下一页,或者您似乎试图在<select>元素和<option>元素正确加载之前调用select_by_value() 因此,一种可能的解决方案是诱使WebDriverWait使元素可以如下选择

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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM