我正在尝试登录网站并尝试单击登录按钮。该按钮的 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']"))
2) 但是,当您使用以下 cssSelector("button[class='btn btn-quaternary']") 时,它会指向您要定位的特定登录按钮。
还有一种使用 XPath 的替代方法(不推荐,因为位置可以更改):
(//button[@type='button'])[4]
关于java - 在 selenium 中自定义 Css 选择器时要选择的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61438843/