python-3.x - UnexpectedTagNameException : Message: Select only works on <select> elements, 不是 <li> 使用 Selenium 从下拉列表中选择 li 元素时出错

标签 python-3.x selenium xpath drop-down-menu css-selectors

我想点击新测试。 HTML 代码看起来像这样。 我是新来的,开始使用 selenium-python 学习自动化。

<li id="testing">

<ul class="dd">
    <li><a href="javascript:toolsPopup('/abc/xyz/text.html');"><span>New Test</span></a></li>
    <li><a href="javascript:toolsPopup('/abc/xyz/list.html');"><span>Test List</span></a></li>
</ul>
</li>

我正在尝试使用的代码

element=driver.find_element_by_id('testing')
drp=Select(element)
drp.select_by_visible_text('New Test')

但是出现错误

selenium.common.exceptions.UnexpectedTagNameException: Message: Select only works on <select> elements, not on <li> 

任何帮助将不胜感激。谢谢!

最佳答案

作为 New Test 文本的下拉元素不在 Select 中您不能使用的节点 Select类(class)。选择 <option>将文本作为新测试,您需要诱导WebDriverWait对于 element_to_be_clickable()您可以使用以下 基于 Locator Strategies :

  • 使用 CSS_SELECTOR :

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li#testing > ul.dd li > a[href*='/abc/xyz/text.html'] > span"))).click()
    
  • 使用 XPATH :

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[@id='testing']/ul[@class='dd']//li/a/span[text()='New Test']"))).click()
    
  • 注意:您必须添加以下导入:

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

引用

您可以在以下位置找到一些相关讨论:

关于python-3.x - UnexpectedTagNameException : Message: Select only works on <select> elements, 不是 <li> 使用 Selenium 从下拉列表中选择 li 元素时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62619301/

相关文章:

python - Scrapy:从网站上抓取所有文本,但不抓取超链接的文本

python - 用 Python 3 学习 Django?

python - 使用 Jenkins 运行站点正常运行时间和验证测试

java - Selenium 网络驱动程序 : MalformedByteSequenceException Invalid byte 2 of 2-byte UTF-8 sequence

Java Selenium/HtmlunitDriver 打开错误的网站

java - Selenium 查找多种可能类型的元素

xpath - 如何缩短此xpath表达式?

python - 如何自动更改字符串中的字符?

python - 如何让 Mypy 将卡住数据类识别为 Hashable

python - 使用 python 在 Windows 中更改鼠标指针速度