gpt4 book ai didi

c# - 如何使用 C# 在 webdriver 2 中使用 xpath 获取 webtable 中的确切行数

转载 作者:行者123 更新时间:2023-11-28 20:41:48 27 4
gpt4 key购买 nike

想要获取表 Xpath 中存在的行数,我传递的是 .//*[@id='ctl00_mainContent_Tabs_TabPanelEmploymentAdmin_EmploymentAdmin_grvAssignmentHistory']

我的页面 HTML 是这样的

<table id="ctl00_mainContent_Tabs_TabPanelEmploymentAdmin_EmploymentAdmin_grvAssignmentHistory"
<tbody>
<tr>
<th></th>
<th></th>
<th></th>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>

我的代码在输出时返回 0。

IWebElement TargetElement = driver.FindElement(By.XPath(xPathVal));
IList<IWebElement> ElementCollectionHead = TargetElement.FindElements(By.XPath(xPathVal+"/tbody/tr[*]"));
int RowCount = ElementCollectionHead.Count;

最佳答案

此问题的两个可能原因如下:

  1. Selenium 需要一些时间来识别元素(元素加载时间)
  2. 如@Richard 所述,元素位于 iframe 内。

第一个问题的解决方案可能是对 FindElement() 使用显式等待(顺便说一句,在这里我更喜欢 CssSelector 而不是 XPath,因为我不必使用 XPath)

By css = By.CssSelector("#ctl00_mainContent_Tabs_TabPanelEmploymentAdmin_EmploymentAdmin_grvAssignmentHistory tr");
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
IList<IWebElement> elementCollectionHead = wait.Until(webDriver => webDriver.FindElements(css));
int rowCount = elementCollectionHead.Count;

如果问题是 iframe 那么你必须使用 SwitchTo() 来切换到 iframe 然后寻找元素

// you can use xpath or cssselector to identify the iframe
driver.SwitchTo().Frame(driver.FindElement(By.Id("iframe id")));

By css = By.CssSelector("#ctl00_mainContent_Tabs_TabPanelEmploymentAdmin_EmploymentAdmin_grvAssignmentHistory tr");
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));

IList<IWebElement> elementCollectionHead = wait.Until(webDriver => webDriver.FindElements(css));
int rowCount = elementCollectionHead.Count;

driver.SwitchTo().DefaultContent();

关于c# - 如何使用 C# 在 webdriver 2 中使用 xpath 获取 webtable 中的确切行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29724215/

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