如何通过for属性或类名称查找元素?

时间:2020-03-10 11:59:35

标签: java selenium selenium-webdriver

我想单击一个按钮,我有此信息。没有id,我只有以下代码:

enter image description here

如何使用突出显示的信息制作findElement

我尝试过

driver.findElement(By.cssSelector("icon f_checkbox inlblk vtop")).click();

3 个答案:

答案 0 :(得分:2)

您需要告诉驾驶员那是类

driver.findElement(By.cssSelector("[class='icon f_checkbox inlblk vtop']")).click();

或简化

driver.findElement(By.cssSelector(".icon.f_checkbox.inlblk.vtop")).click();

如果要使用for属性

driver.findElement(By.cssSelector("[for='renderCheckbox1-1']")).click();

答案 1 :(得分:1)

使用CSS选择器时,需要遵循一些规则,例如Here

对于CSS中的类,它只是“.”,而不是

driver.findElement(By.cssSelector("icon f_checkbox inlblk vtop").click();

尝试(鉴于这是唯一的类,否则您可能需要共享HTML的较大部分)(如Guy所建议的那样)。

driver.findElement(By.cssSelector(".icon.f_checkbox.inlblk.vtop").click();

答案 2 :(得分:1)

有多种使用$jsTime发送多个 classname 的方法,您可以使用以下任一Locator Strategies

  • 仅使用 classNames 如下:

    findElement()
  • 使用以及 tagName classnames 如下:

    driver.find_element_by_css_selector(".icon.f_checkbox.inlblk.vtop")
    
  • 使用如下:

    driver.find_element_by_css_selector("label.icon.f_checkbox.inlblk.vtop")
    

但是,根据您共享的HTML,您可能需要合并其他一些属性以在DOM Tree中唯一地定位元素,并且可以使用以下任一 Locator Strategies

  • 使用以及 tagName classnames 如下:

    driver.find_element_by_xpath("//label[@class='icon f_checkbox inlblk vtop']")
    
  • 使用如下:

    driver.find_element_by_css_selector("label.icon.f_checkbox.inlblk.vtop[for='renderCheckbox1-1']")