【问题标题】:Attribute to choose while customizing Css Selector in selenium在 selenium 中自定义 Css Selector 时要选择的属性
【发布时间】:2020-04-26 09:57:21
【问题描述】:

我正在尝试登录网站并尝试单击登录按钮。该按钮的 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']") 时,它完全可以正常工作。

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

【问题讨论】:

    标签: java css selenium


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-05-14
      • 2014-03-25
      • 1970-01-01
      • 2019-12-24
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 2014-12-27
      • 2012-12-24
      相关资源
      最近更新 更多