Tag: css selectors

Selenium的GetAttribute方法的并发症

我最近尝试使用selenium RC的GetAttribute方法,但立即遇到了挑战。 我试图执行一个非常简单的selenium.GetAttribute(“//a/@href”)但代码抛出了一个SeleniumException,消息为“ERROR:找不到元素属性:// a / @ href” 。 通过用selenium.GetText(“//a[@href]”)代替GetAttribute调用,我确认一个元素肯定存在,因为这个语句正确地返回了链接的文本。 然后我尝试了: 指向具有不同协议的不同网页(文件:/// vs http://) – 同样的问题。 使用指向不同属性的不同xpath定位器 – 同样的问题。 使用DOM定位器selenium.GetAttribute(“document.getElementsByTagName(‘a’)[0].getAttribute(‘href’)”) – 同样的问题; 稍有不同的错误消息(并且错误消息缺少最后的括号): “错误:元素document.getElementsByTagName(’a’)[0] .getAttribute(’href’not found” 。请注意,此精确表达式在Firebug中正常工作安慰。 使用绝对而不是相对xpath寻址,使用selenium.GetText(“xpath=/html/body/a[@href]”)来确认存在,然后使用selenium.GetAttribute(“xpath=/html/body/a/@href”)获得属性 – 它工作了! 虽然本手册明确指出相对 xpath定位器不需要显式定位器类型(即“xpath =”前缀),但它对绝对 xpath定位器保持沉默; 我从中解释说前缀是必需的。 但出于好奇,我回到了我的相对表达式并添加了显式前缀 – 将selenium.GetAttribute(“//a/@href”)更改为selenium.GetAttribute(“xpath=//a/@href”) – – 这也有效! 最后,我在Selenium IDE中使用非常方便的“ 查找”按钮进行的​​实验表明,它可以很好地处理元素,但是会失败并带有属性。 我可以理解,突出属性没有意义,因为属性不是可见的页面元素,但为什么不突出显示包含属性的元素,并使其以不同的颜色? 也许不是一项微不足道的任务…… 我的问题: 我将上述实验的结果归结为这些问题; 这是我在这里发布的全部目的! 这些似乎对我来说都是一个错误,但如果您认为我的使用不正确或有解决方法,请告诉我: 为什么具有XPath定位器类型的GetAttribute在其他方法(例如GetText)不需要时才需要显式定位器类型? 为什么DOM定位器因“未找到”错误而失败? (该手册还明确指出DOM定位器不需要显式的定位器类型前缀,但我仍然尝试在DOM测试中添加“dom =”作为前缀;它仍然失败。) 为什么Selenium IDE在尝试突出显示(查找)属性时不会更优雅地失败? […]

无法在selenium webdriver中找到::之前的css选择器元素

我想测试复选框已选中或未选中状态。 这是复选框选中的html代码 ::before ::before是css选择器。 当我转移到复选框时,它显示webelement为span.check::before 但 driver.FindElement(By.CssSelector(“span.check::before”)); 抛出元素未找到exception。 任何帮助将受到高度赞赏。

在WPF中打开ContextMenu时保留DataGrid IsSelectionActive?

我有一个DataGrid ,它具有IsSelectionActive的样式; 但是,一旦ContextMenu打开,网格就会丢失IsSelectionActive并且用户看起来好像上下文菜单以某种方式进行了选择并且可能会使用户感到困惑。 有没有办法在上下文菜单打开时保留IsSelectionActive ? <!—->

按Selenium Webdriver包含的文本选择元素

我已经开始使用Selenium Webdriver了,我直接打了一个问题,涉及我试图选择/点击的按钮都没有ID并且共享同一个类。 所以我想知道如何通过它们包含的独特文本来选择它们。 我可能想用css选择器,但我不确定如何告诉它寻找特定的文本来选择元素。 我现在拥有的是: using OpenQA.Selenium; using OpenQA.Selenium.Firefox; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using OpenQA.Selenium.Internal; namespace SeleniumTest1.Methods { public class HomePage { private readonly IWebDriver _browser; public HomePage(IWebDriver browser) { _browser = browser; } public IWebElement SearchBox() { return _browser.FindElement(By.Id(“searchBox”)); } public void ImageButton() { _browser.FindElement(By.CssSelector(“a”)).Click(); } } } […]

如何在ASP.NET中按类而不是ID选择元素?

我在aspx页面上有一些分散的 元素,我使用类似的类将它们组合在一起 – 在我的代码背后,使用C#我想隐藏这些元素,使用像instructions.Visible = false; 但是我知道如果我使用ID,我只能在代码隐藏中执行此操作,但这会导致无效的HTML / CSS选择器,因为您不能拥有具有相同ID名称的多个ID … 或者是否有其他方法来分组控件,如果不是按类? 编辑:我不能使用JavaScript,因此选择必须在C#codebehind / ASP.NET中完成