Как установить флажок, покрытый ссылкой Selenium WebDriver в C#

avatar
Рустем Фархутдинов
8 августа 2021 в 22:23
75
2
0
<div class="checkbox_tick fs-12 mb-14 js-agreement-wrapper">
<div class="input checkbox">
<input type="hidden" name="agreement" value="0">
<label for="agreement">
<input type="checkbox" name="agreement" value="1" class="js-checkbox js-agree checkbox-inited" id="agreement">
"Some Text on the page"
<a href="/pages/agreement" target="_blank" class="black">Some Text on the page</a></label></div>                            
</div>

Я использовал и селектор CSS, и запрос XPath. Когда ссылка открыта, флажок

не устанавливается.

driver.FindElement(By.CssSelector("div.checkbox_tick.fs-12.mb-14.js-agreement-wrapper")).Click();

driver.FindElement(By.XPath("//*[@id='step1']/div[4]/div[2]/div/form/div[3]/div")).Click();

Источник

Ответы (2)

avatar
shatulsky
9 августа 2021 в 09:18
0

Вы можете попробовать щелкнуть по нему с помощью JS

public void JavaScriptClick(IWebElement element)
{
    IJavaScriptExecutor executor = (IJavaScriptExecutor)driver;
    executor.ExecuteScript("arguments[0].click();", element);
}
avatar
YaDav MaNish
9 августа 2021 в 02:13
0

Вы можете попробовать указанный ниже XPath, это может помочь установить флажок

//input[@id='agreement' and @type = 'checkbox']

ИЛИ

//input[@name='agreement' and @type = 'checkbox']

driver.FindElement(By.XPath("//input[@id='agreement' and @type = 'checkbox']")).Click();


driver.FindElement(By.CssSelector("input#agreement")).Click();

Подождите немного, прежде чем устанавливать флажок, который вы можете использовать explicitWait

var wait = new WebDriverWait(driver, TimeSpan.FromMinutes(3));
var chckBox = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//input[@id='agreement' and @type = 'checkbox']")));
chckBox.click()