如何通过Selenium和Python根据HTML从选项中选择值
我试图更改下拉列表的值,在从如何通过Selenium和Python根据HTML从选项中选择值,python,selenium,select,selenium-webdriver,display,Python,Selenium,Select,Selenium Webdriver,Display,我试图更改下拉列表的值,在从标记和标记中选择值时遇到问题 这是我想更改的HTML 一 二 三 四 五 根据您提供的HTML,似乎标记包含样式属性,如显示:无。因此,您可以使用以下解决方案选择一个选项: from selenium.webdriver.support.ui import Select # other lines of code driver.find_element_by_name('frmSearch').find_element_by_id('searchByInput91
标记和
标记中选择值时遇到问题
这是我想更改的HTML
一
二
三
四
五
根据您提供的HTML,似乎
标记包含样式属性,如显示:无。因此,您可以使用以下解决方案选择一个选项:
from selenium.webdriver.support.ui import Select
# other lines of code
driver.find_element_by_name('frmSearch').find_element_by_id('searchByInput91').click()
element = driver.find_element_by_xpath("//select[@class='m-tcol-c' and @id='searchBy']")
driver.execute_script("arguments[0].removeAttribute('style')", element)
select = Select(driver.find_element_by_xpath("//select[@class='m-tcol-c' and @id='searchBy']"))
select.select_by_value('1')
简单回答:你不能。这就是硒的全部意义所在。如果用户不能这样做(比如当元素被隐藏时),Selenium(按设计)不允许您这样做。表单在您单击文本输入字段后是否可见?它看起来就像您开始在textbox中键入某个值,然后开始显示下拉值作为建议。如果我错了,请纠正我?我不知道如何逐一回复每个评论,对不起。单击文本输入字段是什么意思?在我的例子中,当我单击下拉列表旁边的箭头图标时,我可以看到我可以选择的值。此外,当我用鼠标单击下拉列表时,HTML中的“类”将更改为。这会导致问题吗?这是处理隐藏元素的不正确方法。用户不会通过开发工具手动修改HTML DOM以使元素可见。对不起,您能为我将[find_element_by_id('searchByInput91')]更改为[find_element_by_class_name('seljs_title')]吗?我不知道如何编写“xpath”。非常感谢你的帮助。哦!它起作用了!!!!!!!我只是将“searchByInput91”更改为“searchByInput952”,当我输入时,它会一直更改。非常感谢。@Andersson你能告诉我为什么这个方法不合适吗?您的意思是“用户不会通过开发工具手动修改HTMLDOM以使元素可见。”?@Andersson,现在我明白了。谢谢你的支持。但是,如果不删除“Display:None”,我如何解决这个问题呢?。您回答的代码仅在“显示”时有效;“无”被删除。如果你有很多时间,你能告诉我怎么做吗?今天我从你那里学到了很多,谢谢。