如何使用Selenium和C#删除元素属性?

时间:2018-11-19 14:39:11

标签: c# selenium selenium-webdriver xpath css-selectors

下面是我要从中删除“ disabled =“ disabled””并关闭开发工具窗口的html块。 iam将selenium-webdriver与c#一起使用。 谢谢。

<a class="btn btn-success" href="javascript:;" id="SendRFQ" data-loading-text="<i class='fa fa-spinner fa-spin'></i> Processing..." disabled="disabled" onclick="return SubmitRequisitionData(&quot;Submitted&quot;)">Click to Submit</a>

2 个答案:

答案 0 :(得分:0)

尝试下面的代码从元素中删除属性

IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("document.querySelector('a.btn.btn-success').removeAttribute('disabled')");

P.S。请注意,实际用户不会修改HTML DOM来启用链接,因此,如果您需要脚本来模拟类似用户的行为,则应该找到另一种方法来启用元素...

答案 1 :(得分:0)

要删除/删除属性及其值为 disabled="disabled" ,因为该元素已启用JavaScript您需要使用 WebDriverwait 使元素可见,并且可以使用以下解决方案之一:

  • 使用PartialLinkText

    IWebElement element = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(By.PartialLinkText("Click to Submit")));
    ((IJavascriptExecutor)driver).ExecuteScript("arguments[0].removeAttribute('disabled')", element);
    
  • 使用CssSelector

    IWebElement element = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(By.CssSelector("a.btn.btn-success#SendRFQ")));
    ((IJavascriptExecutor)driver).ExecuteScript("arguments[0].removeAttribute('disabled')", element);
    
  • 使用XPath

    IWebElement element = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(By.XPath("//a[@class='btn btn-success' and @id='SendRFQ']")));
    ((IJavascriptExecutor)driver).ExecuteScript("arguments[0].removeAttribute('disabled')", element);