我想在字段中捕获文本并能够单击该元素。它提取所有元素'使用以下内容时将文本写入日志:
String text;
text = HomePageFields.TableOneColumn(driver).getText();
System.out.println("Table One Column contains following:\n" + text);
TableOneColumn
xpath
位于不同的类别:
public static WebElement TableOneColumn(WebDriver driver) throws IOException {
element = driver.findElement(By.xpath("//div[contains(@eventproxy,'isc_QMetricsView_0')]/div[1]/div[1]/div[1]/div[1]/div[1]/div[contains(@style,'position')]/div"));
return element;
我试图使用:
HomePageFields.TableOneColumn(driver).findElement(By.linkText("RFI Overview")).click();
但是它给出了一个错误,说找不到元素。
以下是该特定文字的html链接。但是其他文本包含在同一个标记中,但该主标记中包含不同的位置。
答案 0 :(得分:1)
实际上,By.linkText()
会根据显示的确切文字找到<a>
个元素,而渴望的文字不在任何<a>
标记内。这就是你遇到麻烦的原因。
您应该尝试使用By.xpath()
,如下所示: -
WebElement el = driver.findElement(By.xpath(".//div[descendant::td[text() = 'RFI Overview']]"));
System.out.println("Table One Column contains following:\n" + el.getText());
el.click();
或
WebElement el = driver.findElement(By.xpath(".//div[normalize-space(.) = 'RFI Overview']"));
System.out.println("Table One Column contains following:\n" + el.getText());
el.click();
或者正如我在提供的屏幕截图中看到的,<div>
具有id
属性,其值看起来很独特。如果此元素的此属性值已修复,您还可以尝试将By.id()
用作: -
WebElement el = driver.findElement(By.id("isc_3BL"));
System.out.println("Table One Column contains following:\n" + el.getText());
el.click();
答案 1 :(得分:0)
driver.findElement(By.xpath("//td[.='RFI Overview']")).click();
我建议使用id为isc_3BL的div,但我不确定它是静态id。如果是,你绝对可以使用它来隔离任何其他包含相同精确td的外部表格,并附上文本“RFI概述”