Nic*_*ahn 2 selenium webdriver selenium-webdriver
编辑:
public bool getImage()
{
IWebElement table = driver.FindElement(By.Id("DIV_ID_1"));
string name = String.Format("//*[contains(text(), \'{0}\')]", 'TEST1');
IWebElement element = table.FindElement(By.XPath(name));
IWebElement parent = element.FindElement(By.XPath(".."));
try
{
IWebElement image = element.FindElement(By.XPath("//img"));
}
catch (NoSuchElementException e)
{
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
我怎么知道TEST1
它有没有Image
?在下面的html源代码中,我有tr和tr我有td和一些tr可能有图像标签,有些可能没有
所以,我将传递名称作为一个例子:TEST1
并且在返回时我将期待名称是否具有Image标签.
再次,如果我通过TEST2
和TEST3
它应该return
null
,因为它不具有图像标记及其所在的TEST1
和TEST4
确实有Image tag
,因此它应该返回我真实的.
我尝试过类似的东西,但没有奏效:
string name = String.Format(".//td[contains(., \'{0}\')]/..//@src", "TEST1");
IWebElement element = driver.FindElement(By.XPath(name));
Run Code Online (Sandbox Code Playgroud)
得到此错误:尝试上述代码后...
xpath表达式'.// td [contains(.,'TEST1')] /..//@ src'无法在WebElement中进行求值或得到结果
下面是html源代码
<div id="DIV_ID_1">
<table id="TBLID1">
<tr>
<td>
TEST1
</td>
<td>
<img id="ctl00" src="../App_Themes/Default/images/phone.gif" />
</td>
</tr>
<tr>
<td>
TEST2
</td>
</tr>
<tr>
<td>
TEST3
</td>
</tr>
<tr>
<td>
TEST4
</td>
<td>
<img id="ctl02" src="../App_Themes/Default/images/phone.gif" />
</td>
</tr>
</table>
</div>
Run Code Online (Sandbox Code Playgroud)
所以我会将其分解为几个步骤.
首先得到你的元素:
WebElement element = driver.findElement(By.xpath("//*[contains(text(), 'TEST1')]"));
Run Code Online (Sandbox Code Playgroud)
然后获取父元素:
WebElement parent = element.findElement(By.xpath(".."));
Run Code Online (Sandbox Code Playgroud)
然后检查父元素是否有<img>
标记:
Try
{
WebElement image = parent.findElement(By.xpath("//img"));
}
catch (NoSuchElementException e)
{
System.out.println("Did not find an image");
}
Run Code Online (Sandbox Code Playgroud)
我将它包装在一个函数中,然后我可以在文本中传递以查找图像并返回元素(如果存在).
就像是:
public WebElement getImage(String innerText)
Run Code Online (Sandbox Code Playgroud)
然后只需传入TEST1或TEST2
归档时间: |
|
查看次数: |
425 次 |
最近记录: |