【发布时间】:2021-04-07 10:46:06
【问题描述】:
我对以下情况有疑问。 我想在我的 C# Selenium 元素上执行一个 JS 点击,但我的点击没有被正确调用,我不理解 ExecuteScript 函数的调用约定以正确发送所需的参数。
这是我试图调用的 JS 函数
function clickTab(obj, conteudo, e)
{
var sel;
if(e.target)//Firefox
{
sel = e.target.id;
}
else//IE
{
sel = e.srcElement.id;
}
var count = obj.childNodes.length;
for(i = 0; i < count; i++)
{
var node = document.getElementById(obj.childNodes[i].id);
if(node){
var numNode = node.id.split('-');
if(node.id == sel)
{
node.className = 'selected';
var countC = conteudo.childNodes.length;
for(j = 0; j < countC; j++)
{
var nodeC = document.getElementById(conteudo.childNodes[j].id);
if(nodeC){
var numNodeC = nodeC.id.split('-');
if(numNode[numNode.length-1] == numNodeC[numNodeC.length-1])
{
nodeC.className = 'selected';
}
else
{
nodeC.className = '';
}
}
}
}
else
{
node.className = '';
}
}
}
}
这是对 JS 函数的 HTML 封装调用
<ul id="ctl00_ctl00_tabs" class="tabs" onclick="javascript:clickTab(this, document.getElementById('contents'), event)">
<li class="selected" id="tab-1" style="position: relative; z-index: 1">Var1</li>
<li id="tab-2" style="position: relative; z-index: 1">Var2</li>
<li id="tab-3" style="position: relative; z-index: 1">Var3</li>
</ul>
这是我的 C# 尝试执行单击以选择正确的选项卡,但 driver.ExecuteScript 在 driver.ExecuteScript 上触发异常。
IWebElement buttonToClick = driver.FindElement( By.XPath("//ul[ @id='ctl00_ctl00_tabs' and @class='tabs' ]" );
string script = buttonToClick.GetAttribute( "onclick" );
driver.ExecuteScript( script, "tab-2" );
任何帮助或提示将不胜感激。 谢谢。
【问题讨论】:
-
为什么不点击实际元素:
buttonToClick.Click();?
标签: javascript c# selenium onclick