我是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");
答案 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类型。如果有进一步改进的方法,请分享想法。