当前位置: 首页 > 知识库问答 >
问题:

InvalidSelectorException:无效选择器:不允许使用复合类名

金阳曜
2023-03-14

我尝试单击选择菜单并选择元素

<div id="_desktop_currency_selector">
    <div class="currency-selector dropdown js-dropdown">
        <span>Currency:</span>
        <span class="expand-more _gray-darker hidden-sm-down" data-toggle="dropdown" aria-expanded="false">UAH ₴</span>
        <a data-target="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" class="hidden-sm-down">
            <i class="material-icons expand-more"></i>
        </a>
        <ul class="dropdown-menu hidden-sm-down" aria-labelledby="dLabel" style="display: none;">
            <li>
                <a title="EUR" rel="nofollow" href="http://prestashop-automation.qatestlab.com.ua/ru/?SubmitCurrency=1&amp;id_currency=2" class="dropdown-item">EUR €</a>
            </li>
            <li class="current">
                <a title="UAH" rel="nofollow" href="http://prestashop-automation.qatestlab.com.ua/ru/?SubmitCurrency=1&amp;id_currency=1" class="dropdown-item">UAH ₴</a>
            </li>
            <li>
                <a title="USD" rel="nofollow" href="http://prestashop-automation.qatestlab.com.ua/ru/?SubmitCurrency=1&amp;id_currency=3" class="dropdown-item">USD $</a>
            </li>
        </ul>
        <select class="link hidden-md-up">
            <option value="http://prestashop-automation.qatestlab.com.ua/ru/?SubmitCurrency=1&amp;id_currency=2">EUR €</option>
            <option value="http://prestashop-automation.qatestlab.com.ua/ru/?SubmitCurrency=1&amp;id_currency=1" selected="selected">UAH ₴</option>
            <option value="http://prestashop-automation.qatestlab.com.ua/ru/?SubmitCurrency=1&amp;id_currency=3">USD $</option>
        </select>
    </div>
</div>

我的方式:

WebElement element1 = driver.findElement(By.className("link hidden-md-up"));
Select dropList = new Select(element1);
//    debug sysout
dropList.getOptions().forEach(p -> System.out.println(p.getText()));

结果,我得到了这个异常:

组织.openqa.硒.无效选择器例外: 无效选择器: 不允许复合类名

共有2个答案

麹凯捷
2023-03-14

例外是由于选择器中使用了多个类。将选择器更改为使用single class或cssSelector。参见下面的例子。检查这些选择器是否返回唯一的(必需的)元素。

WebElement element1 = driver.findElement(By.className("hidden-md-up"));

运筹学

WebElement element1 = driver.findElement(By.cssSelector(".link.hidden-md-up"));
富勇军
2023-03-14

它不适用于选择类,因为它不是纯粹的下拉列表,而是未排序的货币列表

您需要通过单击打开下拉列表,执行以下操作

driver.driver.findElement(By.xpath(".//div[@class='currency-selector dropdown js-dropdown']/a[@data-toggle='dropdown']")).click(); 

使用此下拉列表将打开,现在使用xpath从列表中获取单个元素-

.//a[@title='USD']   or  .//a[@title='USD']/parent::li
 类似资料:
  • 我正在测试Python Selenium,我有这样的代码: 在运行过程中,我有这个错误: 它一直运行到“videos = driver .....”这一行你能帮我固定我这边吗?

  • 我正在尝试通过webWhatsapp从聊天中打印我的一条消息。 我可以通过控制台选项卡中的Javascript来做到这一点,我这样做了 问题是,我试图在python上做同样的事情,但它对我不起作用… 以下是我的尝试: 我得到的错误是:消息:无效选择器:不允许复合类名 我对javascript有点陌生,很抱歉理解有误,谢谢你的帮助!:)

  • 问题内容: 我正在尝试通过webWhatsapp从聊天中打印我的消息之一。 我可以通过“控制台”选项卡中的Javascript完成此操作 问题是我试图在python上做同样的事情,但对我不起作用。 这是我尝试过的: 我收到的错误是:消息:无效的选择器:不允许使用复合类名 我对javascript有点陌生,所以很抱歉造成误会,并感谢您的帮助!:) 问题答案: 根据 实施文档: 所以, 使用您将无法传

  • 我试图获取具有特定类名的所有元素: 然而我得到的错误是: 我知道类名中不允许有空格,但是我该怎么办呢? 谢啦

  • 当我搜索要选择的按钮时,我遇到了一个问题。当我尝试使用搜索它时 但是,它给了我一个错误 - 。我阅读了有关此问题的信息,似乎使用解决方案器是解决问题的方法,而不是使用。但是,我无法使 csS 选择器正常工作。这是包含我正在搜索的元素的html片段。 如何选择“pager__item pager__item - last”项目?

  • 我要找到下面的按钮。它是一个蚂蚁控制器。 它位于数据输入表单中,它的XPath变化取决于我们在表单顶部所做的选择。所以XPath不能使用。然后我试了CSS选择器,它也不支持。 最后,我使用类名作为位置策略,并使用移动到元素。 代码成功执行到以下行。 单击部分我们不起作用并抛出元素是不可见的。但元素是可见的