XPath - 下拉框

时间:2018-06-11 21:26:17

标签: xml selenium selenium-webdriver xpath automated-tests

我是Selenium自动化测试的新手。试图在我们的Web应用程序中找到两个下拉框的Xpath,但没有运气;这是两者的HTML代码; 在下面的HTML中,我试图使用Attribute @Placeholder创建Xpath,这是唯一的;休息都在两者中都很常见,但未能正确理解;每个下拉列表都有一组值,我试图使用“选择”尝试“包含”,“开始”方法来获取这些值。

请您提供您的建议和提示。

   <input class="form-control bootstrap-typeahead-input-main" type="text" placeholder="Alpha Type" autocomplete="off" value="" style="background-color: transparent; display: block; position: relative; z-index: 1;">

   <input class="form-control bootstrap-typeahead-input-main" type="text" placeholder="Beta Type" autocomplete="off" value="" style="background-color: transparent; display: block; position: relative; z-index: 1;">

这是我正在制作的最新组合;

@FindBy(how= How.XPATH, using="//input[contains(@placeholder='Alpha Type')]")
@FindBy(how= How.XPATH, using="//input[contains(@placeholder='Beta Type')]")

在找到Xpath后使用Select获取下拉值;

  Select drpAlphaType = new Select(AlphaType);
  drpEnqType.selectByValue("XYZ");

3 个答案:

答案 0 :(得分:0)

XPath的contains()函数是 子字符串 测试 - 不是你想要的。

更改

//input[contains(@placeholder='Alpha Type')]

//input[@placeholder='Alpha Type']

选择input属性值为@placeholder的所有"Alpha Type"元素。

答案 1 :(得分:0)

您使用的是select,但这是错误的,因为根据您的错误:

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

此元素是输入。所以试着像这样处理:

@FindBy(how= How.XPATH, using="//input[@placeholder='Alpha Type']") private WebElement alphaType;
@FindBy(how= How.XPATH, using="//input[@placeholder='Beta Type']") private WebElement betaType;

WebDriverWait waitAlpha = new WebDriverWait(webDriver, 5); // 5 seconds
waitAlpha.until(ExpectedConditions.elementToBeClickable(alphaType)); //wait until element clickable
alphaType.click();
alphaType.sendKeys("your string"); //write 'your string' in input field

WebDriverWait waitBeta = new WebDriverWait(webDriver, 5);
waitBeta.until(ExpectedConditions.elementToBeClickable(betaType));
betaType.click();
betaType.sendKeys("your string");

在此之后应该下拉一个值列表,这些值应该单独定位。

答案 2 :(得分:0)

感谢您的支持和提示。通过我添加的一个额外步骤解决了该问题。前面已正确指出Xpath指向一个输入元素但是&#34;选择&#34;预计

即。 org.openqa.selenium.support.ui.UnexpectedTagNameException:元素应该是&#34; select&#34;但是&#34;输入&#34;

为了尝试替代方案,我放弃了使用&#34; Select&#34;类,但只是输入值。添加两个XPATH(一个用于输入/下拉字段,另一个用于该下拉列表中的值)并按顺序单击两个。现在,我的代码看起来像这样;

$(document).ready(function(){ var videoItems = $('.slidervideo li').length; // Pagination -- for(i= 1; i <= videoItems; i++){ $('.pagination-slider').append('<li><span class="fa fa-circle"></span> </li>'); } //------------------------ $('.slidervideo li').hide(); // Ocultanos todos los slides $('.slidervideo li:first').show(); // Mostramos el primer slide $('.pagination-slider li:first').css({'color': '#CD6E2E'}); //Ejecutamos todas las funciones $('.pagination-slider li').click(paginationslider); // FUNCIONES ========================================================= function paginationslider(){ var paginationsliderPos = $(this).index() + 1; $('.slidervideo li').hide(); $('.slidervideo li:nth-child('+ paginationsliderPos +')').fadeIn(); $('.pagination-slider li').css({'color': '#858585'}); $(this).css({'color': '#CD6E2E'}); } });

另一个是Beta类型。如果有进一步改进的方法,请分享想法。