我有一个 HTML 表格,每页显示大约 20 个对/错问题。我有一个循环运行来随机回答每个问题。一旦页面上的问题完成,就会弹出一个按钮以进入下一页。不过大概有20页。我不想一遍又一遍地重复相同的步骤(specflow),而是想创建一个嵌套循环,但我无法让它工作。
我尝试过的一个例子。这将增加 TR,使其落在每个问题上并随机回答。然后,我尝试对一个元素执行 bool 操作,以查看是否存在下一个问题,但我在嵌套循环中迷失了方向,以便它遍历所有页面。有建议吗?
for (int i = 0; i < count; i++)
{
var rand = Faker.RandomNumber.Next(0, 1).ToString();
if (rand == "0")
{
Browser.FindElement_byXPath(string.Format("//table[@class='table']//tr[{0}]//td[@class='classy']/label/input[@value= 'T']", i + 1)).Click();
}
else
{
Browser.FindElement_byXPath(string.Format("//table[@class='table']//tr[{0}]//td[@class='classy']/label/input[@value= 'F']", i + 1)).Click();
}
}
然后继续下一页
HTML
<table class="table">
<tbody>
<tr class="myClass">
<td>1. </td>
<td>I Like Ducks? </td>
<td class="classy">
<label>
<input type="radio" name="Q1" value="T" checked="checked"> True</label>
<label>
<input type="radio" name="Q1" value="F"> False</label>
</td>
</tr>
<tr class="myClass">
<td>2. </td>
<td>I Like Cars? </td>
<td class="classy">
<label>
<input type="radio" name="Q2" value="T"> True</label>
<label>
<input type="radio" name="Q2" value="F"> False</label>
</td>
</tr>
</tbody>
</table>
<br>
<button type="submit" class="btn btn-primary pull-right"> Continue
<span class="classless"></span>
</button>
鉴于您提供的 HTML,我会这样写...
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using SeleniumExtras.WaitHelpers;
driver = new ChromeDriver();
driver.Manage().Window.Maximize();
driver.Url = "<the url>";
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
var table = wait.Until(ExpectedConditions.ElementIsVisible(By.CssSelector("table.table")));
Random random = new Random();
var questions = table.FindElements(By.CssSelector("tbody > tr.myClass"));
foreach (var question in questions)
{
string value = random.Next(2) == 0 ? "T" : "F";
question.FindElement(By.CssSelector($"input[value='{value}']")).Click();
}
driver.FindElement(By.CssSelector("button.btn-primary")).Click();
一些反馈...
Faker.RandomNumber
所以我只使用标准的Random
。Random
声明放在循环内...这可能会导致生成随机数的问题。value
。然后我可以将 value
插入 CSS 选择器并单击它以选择 T/F。我在您提供的 HTML 上测试了此代码,它为两个问题选择了一个随机值,并成功单击“继续”按钮。