Python Selenium:单击下拉菜单中的选项时可以更改值吗?
Python Selenium: Possible to change value when clicking option in dropdown menu?
我正在使用 python selenium 进行一些搜索。在我查询的一个网页上,如果我想搜索所有部分或特定部分,搜索对话框允许我通过下拉菜单指定。对于 select 哪个部分,该站点在弹出窗口中有一些单独的对话框,我可以在其中单击一个部分,此后,下拉菜单中的选项 "this section" 在内部分配了 select编辑部分。这是 selector 检查后的样子:
<select ...>
<option id="searchthissection" value="<sectionname>">Search only in this section</option>
<option id="searchallsections" value="">Search in all sections</option>
</select>
因此,该值由外部弹出对话框设置。
设置后,我按如下方式触发选项:
webdriver.find_element_by_xpath("//select[@id='searchoption']/option[text()'Search only in this section']").click()
现在,原则上我可以使用 selenium 打开 selection 弹出窗口,切换到它,找到该部分,单击,切换回来,然后 select 选项 "searchthissection" .但这是非常低效的,也是因为弹出窗口加载缓慢并且有多个选项页面可以切换。
我可以轻松地 list/generate 所有我想采用的值。有没有办法在单击选项时直接设置值?我在想这样的事情:
webdriver.find_element_by_xpath("//select[@id='searchoption']/option[text()'Search only in this section']").set_value('<sectionname>').click()
有什么想法吗?
非常感谢!
好的,我解决了。我所做的就是这个。 option=webdriver.find_element_by_xpath(...), webdriver.execute_script("arguments[0].value='<sectionname>';",option)
,然后通过向文本字段发送键触发搜索,发送键 ENTER(由于某些原因,option.click()
不起作用)
我正在使用 python selenium 进行一些搜索。在我查询的一个网页上,如果我想搜索所有部分或特定部分,搜索对话框允许我通过下拉菜单指定。对于 select 哪个部分,该站点在弹出窗口中有一些单独的对话框,我可以在其中单击一个部分,此后,下拉菜单中的选项 "this section" 在内部分配了 select编辑部分。这是 selector 检查后的样子:
<select ...>
<option id="searchthissection" value="<sectionname>">Search only in this section</option>
<option id="searchallsections" value="">Search in all sections</option>
</select>
因此,该值由外部弹出对话框设置。 设置后,我按如下方式触发选项:
webdriver.find_element_by_xpath("//select[@id='searchoption']/option[text()'Search only in this section']").click()
现在,原则上我可以使用 selenium 打开 selection 弹出窗口,切换到它,找到该部分,单击,切换回来,然后 select 选项 "searchthissection" .但这是非常低效的,也是因为弹出窗口加载缓慢并且有多个选项页面可以切换。
我可以轻松地 list/generate 所有我想采用的值。有没有办法在单击选项时直接设置值?我在想这样的事情:
webdriver.find_element_by_xpath("//select[@id='searchoption']/option[text()'Search only in this section']").set_value('<sectionname>').click()
有什么想法吗? 非常感谢!
好的,我解决了。我所做的就是这个。 option=webdriver.find_element_by_xpath(...), webdriver.execute_script("arguments[0].value='<sectionname>';",option)
,然后通过向文本字段发送键触发搜索,发送键 ENTER(由于某些原因,option.click()
不起作用)