Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium 如何切换到不同的<;部门>;并使用WebEEElement查找元素_Selenium_Webdriver - Fatal编程技术网

Selenium 如何切换到不同的<;部门>;并使用WebEEElement查找元素

Selenium 如何切换到不同的<;部门>;并使用WebEEElement查找元素,selenium,webdriver,Selenium,Webdriver,我的页面包含以下源代码: <body> <div id="nsm-header" class="ericssonApplicationBar"> <div id="nsm-body"> <div id="nsm-footer"> <body> 我需要在“nsm正文”中找到一个元素,当我点击它时,会打开一个新窗口/弹出窗口,除了上述三个标签外,还会有一些附加标签。现在页面源代码如下所示: <body

我的页面包含以下源代码:

<body>
    <div id="nsm-header" class="ericssonApplicationBar">
    <div id="nsm-body">
    <div id="nsm-footer">
<body>

我需要在“nsm正文”中找到一个元素,当我点击它时,会打开一个新窗口/弹出窗口,除了上述三个标签外,还会有一些附加标签。现在页面源代码如下所示:

  <body>
       <div id="nsm-header" class="ericssonApplicationBar">
       <div id="nsm-body">
       <div id="nsm-footer">
       <div id="content_0:installNE_shade" class="rf-pp-shade" style="z-index:10001;">
       <div id="content_0:installNE_container" class="rf-pp-cntr e-dialog " 
  <body>

三个想法:

我注意到,在您留下的评论中,第一次找到元素时,您使用了id
(By.id‌​(“content\u 0:\u c27\uu:\u e1797\uu:\u e1798”)
,第二次使用名称时(按名称(“content\u 0:\u c27:\u e1797\uu:\u e1798”)
。此外,我在粘贴的代码中没有看到名称标记,因此这可能是问题所在

我不确定这是否有帮助,但是您设置的等待条件
until(ExpectedConditions.presenceofeleentlocated)
只意味着元素存在,而不是可以对其进行操作(因为它现在可能不可见,等等),这就是
presenceofeleentlocated
工作的原因,但是
。单击()
在同一个元素上可能不会。在Java中还有一个
ExpectedConditions.ElementToBickable
ExpectedConditions.visibilityOf(WebElement元素)
文档化,在C中有
ExpectedConditions.ElementIsVisible
文档化,确保元素不仅存在于代码中,而且高度大于0(这通常意味着它也可以被执行)。也许在这种情况下使用类似的东西会有所帮助


最后,我将检查以确保您使用的id
“content\u 0:\u c27:\u e1797:\u:\u e1798”
不是动态生成的。如果是,您需要使用其他标识符来可靠地定位元素。

当您获得StaleElement异常时,它是在使用findElement查找元素后立即出现的,还是您正在尝试对以前找到的元素执行操作?您好,当我说:new WebDriverWait(driver,30)。直到(ExpectedConditions.presenceOfElementLocated(By.id(“content_0:_c27:_e1797:_:_e1798”));并结束@Test在该语句之后,我的Junit通过,现在当我再次编写驱动程序时。findElement(By.name(“content_0:_c27:_e1797:_e1797:_e1798”)。单击();在这个语句中,我得到了staleelement异常。我不理解的是,在编写显式等待时,我的Junit通过了,这是否意味着元素已经找到了。请注意,在页面源代码之后找到的这个元素有额外的div标记。大家好,请帮我解决问题,我在这里进行测试,我能做什么更进一步?没有出路吗?谢谢AutoKarma!实际上名称和id都是相同的,我尝试了这两种方法。我的意思是。我如何检查id是否自动生成?我确实检查了元素是否可见,即使我无法单击它。我得到了异常。如果任何元素都不可见,这是否意味着txpath可能是错误的?我如何使该元素可见。是否粘贴您的代码?这将有助于查看您编写的内容以及您正在尝试的内容。您好,请在代码中添加一些解释,因为这有助于理解您的代码。只使用代码的答案是不受欢迎的。
new Actions(driver).click(driver.findElement(By.xpath("//div[@id='pop-up']"))).perform()