在this question中,两个答案均使用setAttribute()
作为WebElement
功能。但是,我无法在Java,C#和Python文档中找到此方法,只能getAttribute()
。尝试从C#(Visual Studio)中的WebElement
对象和使用最新Selenium
版本的Java(Eclipse)调用此方法产生相同的结果。
所以我的问题是,这种方法真的存在吗?
答案 0 :(得分:6)
在检查了硒Python API docs和source code之后,我可以得出结论 - 没有这样的方法。并且,WebDriver specification本身内部没有任何内容。
要设置属性,通常执行脚本:
elm = driver.find_element_by_id("myid")
driver.execute_script("arguments[0].setAttribute(arguments[1], arguments[2]);",
elm,
"attr_name",
"attr_value")
答案 1 :(得分:4)
他们正在使用JavascriptExecutor类。
即
WebDriver driver; // Assigned elsewhere
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementById('//id of element').setAttribute('attr', '10')");
或扩展方法
public static void setAttribute(this IWebElement element, string value, bool clearFirst)
{
if (clearFirst) element.Clear();
element.SendKeys(value);
}