dropdownlist ...线程中的异常" main" org.openqa.selenium.support.ui.UnexpectedTagNameException:元素应该是" select"但是" a"

时间:2018-04-18 08:14:51

标签: java selenium

WebDriver driver=new FirefoxDriver();
driver.get("https://login.salesforce.com/");
Select selectname = new Select(driver.findElement(By.xpath("html/body/div[5]/div[2]/div[3]/div[2]/div/div[2]/div/div[4]/div/div[1]/div/div/div[1]/div[2]/div/div/div/div/div/div/div/a"))));
    selectname.selectByIndex(2);

在这里,我通过使用firebug和firepath找到xpath 它显示了潜在客户下拉列表的火道

**我也尝试采用偏xpath但是每次显示不同的xpath时,所以我继续使用absoulte xpath

lead dropdownlist xpath

2 个答案:

答案 0 :(得分:0)

Select只能用于<select>代码。

如果要对<a>元素执行select,则必须创建一个变通方法。 解决方法如下所示:

  1. 点击下拉列表
  2. 点击显示的值
  3. 示例:

    WebElement dropdown = driver.findElement(By.xpath("//a[contains(text(), ''--None--')]"));
    dropdown.click();
    WebElement value = driver.findElement(here insert locator for displayed value in dropdown list);
    value.click();
    

    评论的答案:

    首先,您需要知道您的值具有哪个标记。是<div>吗?是<li>吗? 然后,您可以通过XPath按可见文字搜索值。让我们假设它是<div>

    WebElement myDesiredValue = driver.findElement(By.xpath("//div[contains(text(), 'value text')]"));
    myDesiredValue.click();
    

    如果要在不查找特定值的情况下单击所需索引,则必须使用findElements()方法。取决于HTML,您必须提供一个选择器,选择所有值,如下所示:

    List<WebElement> allValues = driver.findElements(my locator);
    allValues.get(0).click() //0 is first value OR current selected value in dropdown. So, selecting the 2nd index would be more like allValues.get(1).click();
    

答案 1 :(得分:0)

使用xpath找到下拉列表,然后找到值

WebElement dropdown_arrow = driver.findElement(By.xpath("//a[(text()='--None--')]"));
dropdown_arrow.click();
WebElement dropdown_value = driver.findElement("Locator value");
dropdown_value.click();

您也可以使用此xpath下拉

WebElement dropdown_arrow = driver.findElement(By.xpath("//a[@class='select'][(text()='--None--')]"));
dropdown_arrow.click();
WebElement dropdown_value = driver.findElement("Locator value");
dropdown_value.click();