将xpath获取到web元素的异常:org.openqa.selenium.support.ui.UnexpectedTagNameException:元素应该是“select”但是“a”

时间:2018-03-17 17:04:34

标签: selenium selenium-webdriver webdriver

下面有一个包含9个选项的下拉列表,所有都是锚点(a)类型。从列表中选择一个选项,更改其类和&动态的其他属性。

这就是html代码的样子:

<select data_old_value="Email" id="ActionType-db5ff710-2a01-11e8-9c5f-22000aa79843" name="ActionType-db5ff710-2a01-11e8-9c5f-22000aa79843" onchange="RuleWizardIns.RuleActionChanged($(this))" style="width: 103px !important; height: auto !important; display: none;" aria-disabled="false"><option value="Email" selected="selected">Send Email</option><option value="TaskCreate">Create Task</option><option value="AddActivity">Add Activity</option><option value="AddToList">Add To List</option><option value="LeadUpdate">Update Lead Fields</option><option value="TagLead">Tag Lead</option><option value="StarLead">Star Lead</option><option value="UnStarLead">Unstar Lead</option><option value="Webhook">Call Webhook</option></select>
    <option value="Email" selected="selected">Send Email</option>
    <option value="TaskCreate">Create Task</option>
    <option value="AddActivity">Add Activity</option>
    <option value="AddToList">Add To List</option>
    <option value="LeadUpdate">Update Lead Fields</option>
    <option value="TagLead">Tag Lead</option>
    <option value="StarLead">Star Lead</option>
    <option value="UnStarLead">Unstar Lead</option>
    \<option value="Webhook">Call Webhook</option>
</select>
<span>
    <a class="ui-selectmenu ui-widget ui-state-default ui-corner-all ui-selectmenu-dropdown" id="ActionType-db5ff710-2a01-11e8-9c5f-22000aa79843-button" role="button" href="#nogo" tabindex="0" aria-haspopup="true" aria-owns="ActionType-db5ff710-2a01-11e8-9c5f-22000aa79843-menu" style="width: 103px;" aria-disabled="false"><span class="ui-selectmenu-status">Send Email</span><span class="ui-selectmenu-icon ui-icon ui-icon-triangle-1-s"></span></a>
        <span class="ui-selectmenu-status">Send Email</span>
        <span class="ui-selectmenu-icon ui-icon ui-icon-triangle-1-s"></span>
    </a>
</span>

我试图通过使用下面的代码来控制更新潜在客户选项,但遗憾的是它无效。

Select ActionType = new Select(driver.findElement(By.xpath("//select[@data_old_value='Email']/following-sibling::span/a")));        
ActionType.selectByVisibleText("Update Lead Fields");

我收到以下错误:

org.openqa.selenium.support.ui.UnexpectedTagNameException: Element should have been "select" but was "a"

并且没有用于select属性的ui,如下图所示:

https://d24cdstip7q8pz.cloudfront.net/t/t20170511180558/content/common/images/Untitled.png

1 个答案:

答案 0 :(得分:0)

只有通过获取带有标记的WebElement是“select”才能创建Select对象,这就是错误消息的含义。我创建了一个C#示例,我测试了它给出了预期的结果。

Driver.Url = ("https://developer.mozilla.org/en-
US/docs/Web/HTML/Element/select");

var valuesSelectElement = Driver.FindElement(By.Name("select"));
var selectElement = new SelectElement(valuesSelectElement);
// To select an option by value
selectElement.SelectByValue("value1");
// To select an option by text
selectElement.SelectByText("Value 2");
var options = selectElement.Options;
//To click on one of the options
foreach (var option in options)
{
     if (option.Text.Equals("Value 3"))
     {
         option.Click();
     }
}