我找到了一种方法将多行合并为一行,以逗号分隔,但现在我想删除最后一个逗号.
CREATE TABLE supportContacts
(
id int identity primary key,
type varchar(20),
details varchar(30)
);
INSERT INTO supportContacts (type, details)
VALUES ('Email', 'admin@sqlfiddle.com'),
('Twitter', '@sqlfiddle');
Run Code Online (Sandbox Code Playgroud)
此查询组合了类型,但我现在要删除最后一个逗号:
SELECT top (2)
type + ', ' AS 'data()'
FROM
supportContacts
ORDER BY
type DESC
FOR XML PATH('')
Run Code Online (Sandbox Code Playgroud)
这是目前的结果:
Twitter, Email,
Run Code Online (Sandbox Code Playgroud) 我在寻找 iframe 时遇到问题。我想切换到此 iframe,然后单击其中的一个元素。
我尝试使用 Id、Xpath、TagName 和 CssSelector 查找 iframe,但每次查找元素时我的测试都会超时。
这是页面源代码中显示的 iframe:
<div xmlns="http://www.w3.org/1999/xhtml" id="dashboardView" style="display: block;">
<iframe id="dashboardViewFrame" border="0" scrolling="no" frameborder="0"
style="visibility: visible; height: 607px; width: 1280px; background-color: transparent;"
src="HtmlViewer.ashx?Dd_ContentId=6a8a44ae-2bd5-4f3c-8583-e777279ad4f2"></iframe>
</div>
<iframe xmlns="http://www.w3.org/1999/xhtml" id="dashboardViewFrame" border="0" scrolling="no"
frameborder="0" style="visibility: visible; height: 607px; width: 1280px; background-color:
transparent;" src="HtmlViewer.ashx?Dd_ContentId=6a8a44ae-2bd5-4f3c-8583-e777279ad4f2"></iframe>
Run Code Online (Sandbox Code Playgroud)
这是我当前的代码:
public static bool IsAt
{
get
{
try
{
var dashboardiFrame = Driver.Instance.FindElement(By.Id("dashboardViewFrame"));
//todo switch to iframe
//todo find element within iframe
return true;
}
catch
{
return false;
}
}
} …Run Code Online (Sandbox Code Playgroud) 填写必填字段时可以找到此元素:
IWebElement e1SK = Driver.Instance.FindElement(By.XPath(baseXPathSendKeys + "div[2]/textarea"));
Run Code Online (Sandbox Code Playgroud)
如果未填写必填字段,则不应存在上述元素.
该测试抛出异常:
OpenQA.Selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与之交互
这是我需要创建一个方法,还是比这更简单?如果你能展示一个例子,它会有所帮助,我还是C#和Selenium Webdriver的新手.
我已经读过,我可以使用一个名为findwebelements的东西,然后检查以确保结果的长度为零,但我也不确定如何实现.
我想从 AGX9 单声道定价字段中提取 3745 的值,以便将其添加到数据表中。但是 input.Text 变为空,我在此页面的 HTML 中没有看到 3745 的实际值。

这是此输入元素的 HTML:
<td class="monaural" ng-class="{'has-error' : vm.pricingForm[i].$invalid && vm.pricingForm[i].$dirty}" ng-init="i = ha + 'Monaural'">
<span class="caption caption-currency">$</span>
<input class="form-control price-control ng-pristine ng-valid ng-valid-required ng-valid-pattern ng-touched" type="text" required="" ng-pattern="/^[0-9]{3,5}(\.[0-9]{2})?$/" ng-model="vm.data[2][i].value" name="agx9Monaural">
</td>
Run Code Online (Sandbox Code Playgroud)
这是我用来尝试将标签、单声道和双声道价格添加到数据表的代码。
foreach (IWebElement row in rows)
{
var inputFields = row.FindElements(By.TagName("input"));
//monoaural add to dataTableRow
dr[1] = inputFields[0].Text;
//binaural add to dataTableRow
dr[2] = inputFields[1].Text;
actualDataTable.Rows.Add(dr);
}
Run Code Online (Sandbox Code Playgroud) 我的最终目标是能够在网页上单击"是"或"否".
使用fire bug我可以看到Yes和No按钮位于名为"btn-group"的类中
<div class="btn-group btn-group-default answer-toggle" aria-label="..." role="group">
<button class="btn ng-pristine ng-valid active btn-secondary ng-touched" btn-radio="true" ng-model="consultation.previousSoundVoid" ng-class="{'btn-secondary': consultation.previousSoundVoid}" type="button">
Yes
</button>
<button class="btn ng-pristine ng-untouched ng-valid" btn-radio="false" ng-model="consultation.previousSoundVoid" ng-class="{'btn-secondary': consultation.previousSoundVoid == false}" type="button">
No
</button>
</div>
Run Code Online (Sandbox Code Playgroud)
我想我可以通过XPath找到Element,但我正在努力提高我的Selenium技能.
我希望有一种方法可以先找到"btn-group"类,然后在某种程度上选择Yes或No.
或者能够为"是"和"否"选项创建变量.如果我做:
var button = Driver.Instance.FindElements(By.ClassName("btn"));
Run Code Online (Sandbox Code Playgroud)
它返回21个选项.我找到:
button[15].Text returns "Yes"
button[16].Text returns "No"
Run Code Online (Sandbox Code Playgroud)
而不是必须查看所有21个结果并担心索引是否发生变化,我可以通过某种方式按文本搜索结果吗?