如何使用Selenium Webdriver查找没有id属性的div元素

时间:2014-02-10 11:36:59

标签: c# selenium selenium-webdriver

我正在使用C#和Selenium Webdriver,我正在尝试在我的html代码中找到一个div元素,如下所示:

<div class="x-grid-cell-inner" style="text-align: left;" unselectable="on">
    phys_tag_desc
</div>

我找不到使用Selenium Webdriver搜索div元素值的方法。我已经搜索过这个网站并查看了Selenium Webdriver文档,但找不到任何内容。

3 个答案:

答案 0 :(得分:3)

如果文本值是唯一的,那么解决方案很简单。试试下面的xpath:

//div[text()='phys_tag_desc']

如果文字不完全匹配。请尝试以下方法:

//div[contains(text(),'phys_tag_desc')]

答案 1 :(得分:2)

我有两种方法。 方式2更复杂但更有效。

方式1;

你可以循环所有的div并寻找一些等于

示例:

foreach(HtmlElement o in webbrowser.Document.GetElementByTagName("div"))
{
    HtmlElement yourElement;
    if(o.GetAttribute("class")=="x-grid-cell-inner"&&o.GetAttribute("style")=="text-align: left;")
    {
        yourElement=o;
        break;
    }
    DoSomethingWith(yourElememt);
}

另一种方式是跟随元素路径; 您可以找到具有ID的close元素 例如:

<div id="element">
    <div>content..</div>
    <div>
        <div class="x-grid-cell-inner" style="text-align: left;" unselectable="on">
        phys_tag_desc
        </div>
    </div>
</div>

此示例中具有id的最接近元素是

<div id="element">

你元素的父元素是2. id =“element”div的子元素 你可以得到它并按照这样的路径

yourElement = webbrowser.Document.GetElementById("element").Children[1].Children[0];

答案 2 :(得分:0)

在其他情况下,您可以使用 XPATH 布尔运算符。 试试下面的 xpath

By.XPath("//div[contains(@class,'*x-grid-cell-inner*') and contains(@unselectable, '*on*') and contains(text(),'*phys_tag_desc*')]")

再见