首先感谢你的时间。
我正在尝试使用selenium在我的网络应用程序的列表框中查找条目
driver.findElement(By.xpath("//*[text()='" + title + "']")).click();
如何修改我的代码以停止搜索所有内容并搜索以下内容:(我的列表框中的myXpath输出来自firebug / firepath)
<div id="ctl00_ctl00_MainContentPlaceHolder_MainContentPlaceHolderSurvey_upSurveysList">
再次感谢,你能否尽可能地解释你的答案,我正在努力学习这一点,因为我将需要它很多未来
<div id="ctl00_ctl00_MainContentPlaceHolder_MainContentPlaceHolderSurvey_upSurveysList">
Displaying 1-10 of 47 Records
<div class="ListBox">
<div class="divListItem">
<a id="ctl00_ctl00_MainContentPlaceHolder_MainContentPlaceHolderSurvey_lvSurveys_ctrl0_ctl00_btnApplicationID" class="manCensoredName" href="javascript:__doPostBack('ctl00$ctl00$MainContentPlaceHolder$MainContentPlaceHolderSurvey$lvSurveys$ctrl0$ctl00$btnApplicationID','')">11</a>
</div>
<div class="divListItem">
<div class="divListItem">
<div class="divListItem">
<div class="divListItem">
<div class="divListItem">
<div class="divListItem">
<div class="divListItem">
<div class="divListItem">
<div class="divListItem">
答案 0 :(得分:1)
C#例如点击链接:
driver.FindElement(By.Id("ctl00_ctl00_MainContentPlaceHolder_MainContentPlaceHolderSurvey_upSurveysList")).Click();
在XPath中执行此操作:
driver.FindElement(By.XPath("//*[@id='ctl00_ctl00_MainContentPlaceHolder_MainContentPlaceHolderSurvey_upSurveysList']")).Click();
答案 1 :(得分:0)
我会写一个像:
driver.findElement(By.xpath("//div[contains(@id,'upSurveysList')].click();
无需编写整个ID;
使用选择xpath的“contains”方法,你可以从div中取出任何部分文本来匹配它(只要该文本没有出现在html的其他地方,但在你的情况下,我不会认为它会。)
我一直回避使用//*
,因为它搜索绝对一切。根据您的网络应用程序的大小,如果您知道自己正在访问div
或canvas
或img
,则可以减少测试时间并提高xpath准确性和可维护性。
此外,我个人认识,我的网络应用程序非常挑剔,使用Actions
和WebElement
是点击我的大多数按钮的唯一方法。
例如:
WebElement mybutton = driver.findElement(By.xpath("//div[contains(@id,'upSurveysList')].click();
Actions actions = new Actions(driver);
actions.moveToElement(mybutton).build().perform();
mybutton.click();
请告诉我这是否适合您。