gpt4 book ai didi

c# - 如何使用 Webdriver 和 C# 通过 Selenium 定位并单击嵌套在多个框架和框架集中的元素

转载 作者:行者123 更新时间:2023-12-01 18:39:40 24 4
gpt4 key购买 nike

我有如下所示的 html 页面,我需要单击 clslogin 类中的“登录”。

如何遍历找到登录名。我正在使用 C# 和 selenium Webdriver。

使用 XPath (/html/body/div/table/tbody/tr[1]/td[3]/a) 我无法控制 Login 类,总是抛出找不到元素的错误。任何人都可以帮助我获得准确的 xpath。

<html>
<head></head>
<frameset name="mytestTopFrame" rows="*"...... >
<frame name="mytestTopsubframe" src="index.html" width="100%"......... >
<html>
<head></head>
<frameset name="mytest" rows="70,20..."...... >
<frame name="mytestsubframe" src="menu.html" width="100%"......... >
<html>
<body class="clsmenu" .......>
<div align="left">
<table id="Title" ......>
<tbody>
<tr class="toptitle" ...>
<td class="clicklogin" ....>
<a class="clslogin" href="linkref">Login </a>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
</frame>
</frameset>
</html>
</frame>
</frameset>
</html>

最佳答案

根据您共享的HTML,单击文本为登录的元素,您必须诱导WebDriverwait两次才能切换2 child frame然后再次找到所需的元素,如下所示:

//SwitchTo mytestTopsubframe
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.FrameToBeAvailableAndSwitchToIt(By.Name("mytestTopsubframe")));
//SwitchTo mytestsubframe
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.FrameToBeAvailableAndSwitchToIt(By.Name("mytestsubframe")));
//Locate the desired element
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//a[@class='clslogin' and @href='linkref']"))).Click();

注意:您不必考虑 <frameset> 的存在并且可以安全地忽略这些标签。

关于c# - 如何使用 Webdriver 和 C# 通过 Selenium 定位并单击嵌套在多个框架和框架集中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59963297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com