Я пытаюсь установить переключатель по его Xpath или Id. Я проверил элемент с помощью Google Developer Tool и смог получить следующую информацию:
Имя элемента: <label for = "1346_Voltagem_0"
class = "dimension-Voltagem espec_0 skuespec_110v
skuespec_Voltagem_opcao_110V
skuespec_Voltagem_opcao_110v">110V</label>
Xpath:
/html/body/div[9]/div/div/div[3]/div[3]/div[1]/div/ul/li[2]/span/label[1]
Я хотел бы знать, как сказать коду, что он должен щелкнуть эту радиокнопку?
кликните сюда для страницы, на которой я хочу щелкнуть radioButton. Кроме того, точный элемент см. На приведенном ниже снимке экрана.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Для этого вы должны использовать xpath, так как вам нужно найти label, а затем найти предыдущий ввод для него.
Вы можете найти этикетку, используя
//div[contains(@class,'prod-sku-selector')]//label[.='110V']
и теперь, чтобы получить предыдущий input, вы можете использовать
//div[contains(@class,'prod-sku-selector')]//label[.='110V']/preceding-sibling::input[1]
Я всегда считаю, что xpath не должен сильно зависеть от ваших html div и иерархии, поскольку это очень легко потерпеть неудачу даже при малейшем изменении. Итак, используя xPath как "/ html / body / div [9] / div / div / div [3] / div [3] / div [1] / div / ul / li [2] / span / label [1]" "не лучший вариант.
В этом случае я бы посоветовал вам использовать xpath ниже:
Если необходимо щелкнуть первую радиокнопку:
//div[contains(@class, 'prod-sku-selector')]//input[@type='radio'][1]
Если необходимо щелкнуть радиокнопку со значением 110v:
//div[contains(@class, 'prod-sku-selector')]//input[contains(@value, '110V')]
Затем вы можете получить элемент, используя:
radioBtn1 = findElement(By.xpath("//div[contains(@class, 'prod-sku-selector')]//input[@type='radio'][0]"));
Кроме того, вы можете щелкнуть радио в селене, используя:
radioBtn1.click();
См. это. Указанный ранее xpath //div[contains(@class, 'prod-sku-selector')]//input[@type='radio'][0] не работает.
Я обновил указатель в своем ответе. Для второй точки, относящейся к 110 В, это полностью зависит от требований, если необходимо щелкнуть первую радиокнопку, будет работать вышеуказанный параметр, иначе, если необходимо щелкнуть конкретный 110 В, можно использовать следующий xpath: // div [ contains (@class, 'prod-sku-selector')] // input [contains (@value, '110V')]. Весь мотив этой платформы - помогать людям, а не кормить их с ложечки.
Избегайте использования абсолютных xpath, поскольку небольшое изменение пользовательского интерфейса приведет к внесению большого количества изменений в ваш код. По вашему вопросу следующие xpaths будут работать.
driver.findElement(By.xpath("//label[text()='110V']")).click();
driver.findElement(By.xpath("//label[contains(@class,'110v')]")).click();
Рад, что это получилось! Пожалуйста, рассмотрите возможность голосования за ответы, если это сработает для вас :)
Попробуй это:
driver.findElement(By.xpath("//input[@class='skuselector-specification-label input-dimension-Voltagem sku-selector skuespec_110v change-image']")).click();
Xpath неверен.
[0]не является допустимым индексом. Он должен начинаться с[1]. Также вы должны попытаться идентифицировать элемент управления, используя некоторую ссылку, а не только индексы. Потому что, если опция110Vбудет отключена, тогда она просто слепо выберет вариант220V, не вызывая проблем.