java - 在 selenium 中自定义 Css 选择器时要选择的属性

标签 java css selenium

我正在尝试登录网站并尝试单击登录按钮。该按钮的 HTML 节点是

<button data-purpose="header-login" type="button" class="btn btn-quaternary">Log In</button>

我的代码是

WebDriver driver = new FirefoxDriver();

driver.get("https://www.udemy.com");

WebDriverWait wait = new WebDriverWait(driver,30);    
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("button[type='button']"))).click();
O/P- `Exception in thread "main" org.openqa.selenium.TimeoutException: Expected condition failed: waiting for visibility of element located by By.cssSelector: button[type='button'] (tried for 30 second(s) with 500 milliseconds interval)

但是,当我在代码中替换 cssSelector("button[type='button']")cssSelector("button[class='btn btn-quaternary']") ,它工作得很好。

类型是否是错误的属性选择?

最佳答案

您的代码是正确的,但您使用的 CSS 选择器指向多个元素,如下所示:

By.cssSelector("button[type='button']"))

enter image description here

2) 但是,当您使用以下 cssSelector("button[class='btn btn-quaternary']") 时,它会指向您要定位的特定登录按钮。

enter image description here

还有一种使用 XPath 的替代方法(不推荐,因为位置可以更改):

(//button[@type='button'])[4] 

关于java - 在 selenium 中自定义 Css 选择器时要选择的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61438843/

相关文章:

java - 使用 JPA 引用 "to any"

html - 隐藏的用户如何点击输入字段?

javascript - Openlayers动态视口(viewport)宽度和高度分配

node.js - 夜巡在 browser.end() 之后不会终止

javascript - 从 URL 捕获顶级域名时出现问题

java - 实时监听JFrame高宽

java - 从字符串数组 java 中的标记/单词构建句子

java - 模拟策略

javascript - 一键-两种功能

selenium - CSS选择器-如何定位父元素