如何选择选项(Selenium和Python)

2024-07-03 07:27:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题,因为我想得到所选的选项名称:在本例中是Option3。我想使用assert来检查在这种情况下是否正确地选择了值。您可以在下面看到我的页面的一部分:

<html> <body> <table border="0" cellpadding="0" cellspacing="0" class="rich-toolbar " id="mainMenuToolbar" width="100%"> <tbody> <tr valign="middle"> <td class="rich-toolbar-item " style=";"> <form id="substituteForm" name="name" method="post" action="http://homepage/home.seam" enctype="application/x-www-form-urlencoded"> <select name="substituteForm:j_id158" size="1" onchange="document.getElementById(&#39;substituteForm:substituteSubmit&#39;).click();"> <option value="0">Option0</option> <option value="1">Option2</option> <option value="2" selected="selected">Option3</option> </select> </form> </td> </tr> </tbody> </table> </body> </html>

我使用DevTool复制XPath并编写了一个代码:

^{pr2}$

我收到错误信息:

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: //*[@id='substituteForm']/select

我尝试了许多XPath组合,但仍然不起作用。在


Tags: nameformidvaluehtmltablebodyselect
1条回答
网友
1楼 · 发布于 2024-07-03 07:27:42

这似乎是时间问题,但不是XPath

尝试使用以下代码等待目标select元素出现在DOM中:

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wait

select = wait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//form[@id='substituteForm']/select")))
select.click()
selected_option = wait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//option[@selected='selected']")))
assert selected_option.text == "Option3"

相关问题 更多 >