Selenium Python css 选择器按类不起作用

问题描述 投票:0回答:2

我有 4 种方法来定位某个元素并想单击它:

DOM 是:

<div class="ui dropdown selection" tabindex="0">

我通过四种方式定位这个元素:

(By.XPATH, "//div[@class='ui dropdown selection']")
(By.CSS_SELECTOR, "[class='ui dropdown selection']")
(By.CSS_SELECTOR, ".ui dropdown selection")
(By.CLASS_NAME, "ui dropdown selection")

我只是点击元素

方式 1 和 2 有效,测试正常 - 并且 len(element) 为 1

方式3和4不起作用:NoSuchElementException:消息:没有这样的元素:无法定位元素:{“method”:“css选择器”,“selector”:“.ui下拉选择”} - 和len(元素)是 0 (等待没有帮助,方式一、方式二根本不需要等待)

你能告诉我为什么方法3和方法4失败了吗?

python selenium-webdriver css-selectors webdriver
2个回答
1
投票

当在 CSS 选择器中为同一标签使用多个类名时,它们必须用点而不是空格分隔。这是表达第三个的正确方式:

(By.CSS_SELECTOR, ".ui.dropdown.selection")

(By.CSS_SELECTOR, "div.ui.dropdown.selection")
.

对于第四个,你不能将

By.CLASS_NAME
与多个类名组件一起使用。您必须选择一个,但由于这可能不会为您提供唯一的选择器,因此您最好使用其他方法之一来形成选择器。


1
投票

@迈克尔

(By.CSS_SELECTOR, ".ui.dropdown.selection") 
(By.CSS_SELECTOR, "div.ui.dropdown.selection")

两者都不起作用 - selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素

但请注意,只有 1 个元素,因为这有效:

(By.XPATH, "//div[@class='ui dropdown selection']")

len(element) = 1

© www.soinside.com 2019 - 2024. All rights reserved.