Selenium-如何使用按钮中包含的文本在弹出窗口中单击OK按钮

Selenium-如何使用按钮中包含的文本在弹出窗口中单击OK按钮,selenium,Selenium,下面的代码显示在firebug中,用于我的应用程序弹出窗口中的OK按钮 <button id="ext-gen219" class="x-btn-text" type="button"> &nbsp;&nbsp;OK&nbsp;&nbsp; </button> 好啊 这里,按钮id是随机生成的,ok按钮的位置也不可识别。有没有办法通过按钮的文本点击按钮?与此类似,该按钮包含一个名为“确定”的文本。如果是“提交”按钮,则此定位器

下面的代码显示在firebug中,用于我的应用程序弹出窗口中的OK按钮

<button id="ext-gen219" class="x-btn-text" type="button">
    &nbsp;&nbsp;OK&nbsp;&nbsp;
</button>

好啊

这里,按钮id是随机生成的,ok按钮的位置也不可识别。有没有办法通过按钮的文本点击按钮?与此类似,该按钮包含一个名为“确定”的文本。

如果是“提交”按钮,则此定位器
css=input:submit[value=“OK”]
应该可以工作。对于按钮元素take
css=button:contains(“OK”)

我的前提是弹出框的文本不完全相同,因此我建议如下:

List<IWebElement> dialogBox = driver.FindElements(By.Class("dialogBoxClass");
int buttonIndex = dialogBox.FindIndex(i => i.FindElement(By.Class("DisplayedTextElementClass").Text.Contains("some unique text here"));
dialogBox[buttonIndex].FindElement(By.ClassName("x-btn-text")).Click();
List dialogBox=driver.FindElements(按.Class(“dialogBoxClass”);
int buttonIndex=dialogBox.FindIndex(i=>i.FindElement(By.Class(“DisplayedTextElementClass”).Text.Contains(“此处有一些唯一的文本”);
对话框[buttonIndex].FindElement(按.ClassName(“x-btn-text”))。单击();

这将捕获所有对话框的父元素,然后解析每个对象以找到所需框的索引,然后单击正确对象中的“确定”按钮。

对于Selenium IDE或Selenium RC,
xpath=//按钮[包含(,“确定”)]
应该是一个很好的定位器。

我想你遗漏了一些东西。毫无疑问,当OK前后没有空格时,这就正常了//按钮[contains(text(),“OK”)]但是我面临的问题是,一个弹出窗口出现在另一个弹出窗口上,并且都有OK按钮。我上面粘贴的代码是第二个弹出代码。如何使用文本包含当文本前后都有空格时毫无疑问当OK前后都没有空格时,这就起作用了//按钮[contains(text(),“OK”)]但我面临的问题是,一个弹出窗口出现在另一个弹出窗口上,两个弹出窗口都有OK按钮。我上面粘贴的代码是第二个弹出代码。当文本前后都有空格时,如何使用文本包含与许多人认为的相反,没有CSS“:contains”选择器。这是一个在CSS3标准过程中被拒绝的建议。您好,我们使用的是关键字驱动框架,因此我需要确切的XPath。我想我看不出这有什么区别。对我来说,如果您可以捕获button元素,那么您可以捕获wrapper元素,然后构建一个自定义方法或类来解析wrapp呃找到你的具体按钮。