0

为了按名称定位元素,我做了:

text_field = driver.find_element_by_name('panelHeader')

问题是......有 3 个面板具有相同的名称“panelHeader”,并且根据对特定网页的操作,所需的面板(共 3 个)变得可见。因此,每当我尝试按名称定位元素时,它总是会尝试找到第一个 panelHeader。所以我不能做类似按名称查找元素的操作,这样我表示的名称就是可见面板。

我清楚了吗?

4

2 回答 2

1

尝试使用 jQuery 找到它。这就是它在 JAVA 中的实现方式:使用 JQuery 选择和识别元素以在 Selenium 2 Java API 中使用它。你的 jQuerySelector 看起来像这样:

String jQuerySelector = "'$("*[name='panelHeader'].filter(':visible')")'";
于 2012-04-11T12:31:14.097 回答
0

我使用 C#,但我想这在 python 中也是可能的。您可以按名称获取所有元素,然后检查每个元素的“显示”值。例如。(在 C# 中,对不起!:P)

ReadOnlyCollection<IWebElement> things = driver.FindElements(By.Name("panelHeader"));
foreach(IWebElement thing in things)
{
    if (thing.displayed)
    {
        //use thing here! :)
    }
} 
于 2012-04-12T00:05:33.620 回答