从两个动态下拉菜单中选择值

时间:2019-06-06 11:41:25

标签: javascript java selenium-webdriver dropdown

我正在尝试使用Java硒Web驱动程序从站点https://www.xe.com/currencyconverter/的两个下拉列表(货币选择)中选择值。

我还需要代码在货币转换后验证转换

我尝试过:

1. Custom XPath.
2. Normal select using select keyword.
3. Tried using mouse actions but couldn't locate. Looks like it needs javascript executor but don't know the code.

org.openqa.selenium.ElementClickInterceptedException:元素点击被拦截:元素<div class="css-1wy0on6 converterform-dropdown__indicators">...</div>不可点击

1 个答案:

答案 0 :(得分:0)

很可能您有这个Cookie Consent Disclaimer会拦截您的输入事件,因此您不能有效地单击下拉值。

enter image description here

Selenium Java API中,您最好的朋友是WebDriverWait类:

WebDriverWait wait = new WebDriverWait(driver, 5); 

我建议通过上述WebDriverWait与Explicit Wait一起使用ExpectedConditions,以便:

  1. 首先确保cookie免责声明可见并且可以单击,然后单击它:

    wait.until(ExpectedConditions
            .elementToBeClickable(
                    By.xpath("//button[contains(@class,'privacy') and contains(text(), 'OK')]")))
            .click();
    
  2. 然后对第一个下拉列表执行相同的操作:

    wait.until(ExpectedConditions
            .elementToBeClickable(
                    By.id("from")))
            .click();
    
  3. 最后通过再次单击选择您选择的货币:

    wait.until(ExpectedConditions
            .elementToBeClickable(
                    By.xpath("//span[contains(text(),'GBP')]")))
            .click();
    

    用您需要的货币代替GBP