Невозможно выбрать второй параметр переключателя в селене - PullRequest
0 голосов
/ 08 октября 2018

Это то, что уже выбрано:

<input type="radio" tabindex="0" name="accounts" onclick="populateSelection();" value="MC Credit ***388.37***" checked="">

CSS-селектор: body > form > span > table > tbody > tr:nth-child(5) > td.walletDispaly > input[type="radio"]

xpath: /html/body/form/span/table/tbody/tr[4]/td[1]/input

Это то, что я хочу выбрать:

<input type="radio" tabindex="1" name="accounts" onclick="populateSelection();" value="Savings ***388.37***">

CSS-селектор: body > form > span > table > tbody > tr:nth-child(7) > td.walletDispaly > input[type="radio"]

xpath: /html/body/form/span/table/tbody/tr[5]/td[1]/input

То, что я пробовал до сих пор:

  1. driver.findElement(By.xcode("//input[@name='accounts'][2]"));
  2. driver.findElement(By.xcode("//input[@type='radio'][@name='accounts'][position()=2]"));
  3. driver.findElement(By.id("accounts"))
  4. driver.findElement(By.name("accounts"))
  5. driver.findElement(By.cssSelector("[tabindex='1']")

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Вместо использования absolute xpath используйте относительный xpath .Для HTML как:

<input type="radio" tabindex="1" name="accounts" onclick="populateSelection();" value="Savings ***388.37***">

Вы можете использовать любое из следующих решений:

  • cssSelector:

    driver.findElement(By.cssSelector("input[name='accounts'][value^='Savings']")).click();
    
  • xpath:

    driver.findElement(By.xpath("//input[@name='accounts' and starts-with(@value,'Savings')]")).click();
    
0 голосов
/ 09 октября 2018

Почему xpath не работает:

  1. //input[@name='accounts'][2]
  2. //input[@type='radio'][@name='accounts'][position()=2]

    Если у вас обоих есть родственные связи, то только это работает.
    Например,

    <div>
        <input type="radio" tabindex="0" name="accounts" onclick="populateSelection();" value="MC Credit ***388.37***" checked="">
       <input type="radio" tabindex="1" name="accounts" onclick="populateSelection();" value="Savings ***388.37***">
    <div>
    

    Но, похоже, у вас нет этого элемента таким образом.

  3. driver.findElement(By.id("accounts"))

    В вашем элементе нет атрибута id, поэтому он не будет работать.

  4. By.name("accounts")

  5. By.cssSelector("[tabindex='1']")

    С одним и тем же атрибутом на вашем множестве элементовстраница, так что он выполняет действие на самом первом элементе, и вы не видите его для своих предполагаемых элементов.Может быть той же самой причиной для 5-го.

Решение :

Убедитесь, что вы определяете местоположение элемента уникально.Вам нужно настроить свой xpath.Попробуйте следующие решения:

By.xpath

  • //input[contains(@onclick,'populateSelection')][contains( @value,'Savings')]

ИЛИ

  • //input[@tabindex='1'][@name='accounts']
...