Как найти элемент по имени атрибута или класса? - PullRequest
0 голосов
/ 10 марта 2020

Я хочу нажать кнопку, и у меня есть эта информация. Идентификатора нет, и у меня есть только следующий код:

enter image description here

Как я могу сделать findElement, используя выделенную информацию?

Я пытался с

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

Ответы [ 3 ]

2 голосов
/ 10 марта 2020

Вы должны сообщить водителю, что это классы

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 голос
/ 10 марта 2020

При использовании селекторов CSS необходимо соблюдать некоторые правила, такие как Здесь .

Для класса в CSS это просто “.”, поэтому вместо

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

try (учитывая, что это уникальный класс, иначе вам, вероятно, придется разделить большую часть HTML) ниже (как предложил Гай).

driver.findElement(By.cssSelector(".icon.f_checkbox.inlblk.vtop").click();
0 голосов
/ 11 марта 2020

Существует несколько подходов для отправки нескольких имен классов с использованием findElement(), и вы можете использовать любой из следующих Стратегий поиска :

  • Использование и только classNames следующим образом:

    driver.find_element_by_css_selector(".icon.f_checkbox.inlblk.vtop")
    
  • Использование вместе с tagName и именами классов следующим образом:

    driver.find_element_by_css_selector("label.icon.f_checkbox.inlblk.vtop")
    
  • Использование следующим образом:

    driver.find_element_by_xpath("//label[@class='icon f_checkbox inlblk vtop']")
    

Однако в соответствии с HTML, которым вы поделились, вам может потребоваться объединить некоторые другие атрибуты, чтобы найти элемент уникальным образом в DOM Tree и вы можете использовать одну из следующих Стратегий локатора :

  • Использование вместе с tagName и имена классов следующим образом:

    driver.find_element_by_css_selector("label.icon.f_checkbox.inlblk.vtop[for='renderCheckbox1-1']")
    
  • Использование следующим образом:

    driver.find_element_by_xpath("//label[@class='icon f_checkbox inlblk vtop' and @for='renderCheckbox1-1']")
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...