我的HTML代码是:
enter code here:
<table>
<tbody>
<tr>
<td class="item item-selected" id="gwt-uid-537" role="menuitem">Test Customer 1<br>#34</td>
</tr>
<tr>
<td class="item" id="gwt-uid-538" role="menuitem">TEST CUSTOMER 2<br>#1,9874563210</td>
</tr>
<tr>
<td class="item" id="gwt-uid-539" role="menuitem">test <br>test</td>
</tr>
</tbody>
</table>
我想要做的只是在断行标记之前找到客户名称(例如:TEST CUSTOMER 2),然后单击该行。
我尝试过如下:
String ExpCustName = "TEST CUSTOMER 2";
Thread.sleep(1000);
WebElement FindCust = driver.findElement(By.xpath("//div[@class='customer']/table/tbody/tr/td/input[@class='gwt-SuggestBox']"));
FindCust.sendKeys("TES");
List<WebElement> CustList = driver.findElements(By.xpath("//div[@class='suggestPopupMiddleCenterInner suggestPopupContent']//table//tr"));
for(int i=0;i<CustList.size();i++){
String ActCustName = CustList.get(i).getText();
System.out.println(ActCustName);
Thread.sleep(1000);
if(ActCustName.contains(ExpCustName)){
CustList.get(i).click();
}
}
答案 0 :(得分:6)
// find the customer table
WebElement table = driver.findElement(By.xpath("//div[@class='customer']/table"));
// find the row
WebElement customer = table.findElement(By.xpath("//tr/td[contains(text(), 'TEST CUSTOMER 2')]"));
// click on the row
customer.click();
您可能需要调整两个xpath表达式以匹配您的特定页面。
答案 1 :(得分:1)
我从这个问题中理解的是:
List<WebElement> CustList = driver.findElements(By.xpath("//div[@class='suggestPopupMiddleCenterInner suggestPopupContent']//table//tr"));
for(int i=0;i<CustList.size();i++){
String ActCustName = CustList.get(i).getText();
System.out.println(ActCustName);
Thread.sleep(1000);
if(ActCustName.contains(ExpCustName)){
CustList.get(i).click();
}
以上部分代码是点击“TEST CUSTOMER 2”
为此您可以使用以下声明:
driver.findElement(By.xpath("//div[@class='suggestPopupMiddleCenterInner suggestPopupContent']//table/tbody/tr[./td[text()='TEST CUSTOMER 2']]")).click();
我不明白的是:
WebElement FindCust = driver.findElement(By.xpath("//div[@class='customer']/table/tbody/tr/td/input[@class='gwt-SuggestBox']"));
FindCust.sendKeys("TES");
上述代码的目的是什么?
答案 2 :(得分:1)
static WebDriver driver = new FirefoxDriver();
private static WebElement findElementByTagAttr(String tagName, String attrName, String attValue)
{
List<WebElement> elements = driver.findElements(By.tagName(tagName));
WebElement elementToFind = null;
for(WebElement element : elements)
{
if(element.getAttribute(attrName).equals(attValue))
{
elementToFind = element;
break;
}
}
return elementToFind;
}
答案 3 :(得分:0)
在Ruby中,我发现以下内容非常有效。首先是一些背景 - 我使用.properties文件来托管我的元素ID和我的值(URL,文本字段条目等),所以我需要在元素ID的中间插入一个值。我的解决方案是将xpath分解为两个元素id指针:
driver.find_element(:xpath, $elementIDs["FIRST_PART_OF_XPATH"] + $props["REQUIRED_VALUE"] + $elementIDs["END_OF_XPATH"]).click
它并不漂亮,但它很有效。我希望这有助于下一个寻找解决方案的Ruby人。 编辑:对不起,我写这篇文章时心烦意乱。 xpath是// td [包含(。,&#39; Blah&#39;)]其中Blah是$ props提供的文本。我的指针文件如下所示:
FIRST_PART_OF_XPATH=//td[contains(.,'
END_OF_XPATH=')]
我可以通过编辑带有所需文本的$ props文件,轻松更改我搜索的文本。就像我说的那样,它不是很漂亮的代码,但它起作用了。