我有 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失败了吗?
当在 CSS 选择器中为同一标签使用多个类名时,它们必须用点而不是空格分隔。这是表达第三个的正确方式:
(By.CSS_SELECTOR, ".ui.dropdown.selection")
或
(By.CSS_SELECTOR, "div.ui.dropdown.selection")
.
对于第四个,你不能将
By.CLASS_NAME
与多个类名组件一起使用。您必须选择一个,但由于这可能不会为您提供唯一的选择器,因此您最好使用其他方法之一来形成选择器。
@迈克尔
(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