0

SeleniumとJavaを介していくつかのデータを解析および操作しようとしています(ブラウザとしてFirefox、OSとしてUbuntuを使用)。

HTML コード:

...
<div id="someName1">
  <div id="someName2">
    <div id="someName3">
      <a class="sendMessegeLink" onclick="open_win(...)" title="someText1">
        <img style="padding-left:5px; vertical-align:middle" src="..."/>
        someText1
      </a>
    </div>

    <table class="areaTable">
      <tbody>
        <tr>
          <tr>
            <tr class="someName4">
              <td colspan="4">
                <div id="SomeUniqueId" class="someName5" style="display: block;">
                  <table class="someName6">
                    <tbody>
                      <tr>
                        <tr>
                          <td colspan="2">
                            <a class="sendMessegeLink" onclick="open_iframe('...)" title="someText2">
                              <img style="padding-left:5px; vertical-align:middle" src="..."/>
                              <!-- WANTED ("not currently visible") ELEMENT  -->someText2
                            </a>
                            <span class="remark">  someText3</span>
                          </td>
                        </tr>
                      </tr>
                    </tbody>
                  </table>
                </div>
              </td>
            </tr>
          </tr>
        </tr>
      </tbody>
    </table>
  </div>
</div>
...        

クラス「sendMessegeLink」の要素「someText2」をクリックしようとしました:

WebElement inputElement = driver.findElement(By.xpath(".//*[@id='SomeUniqueId']/table/tbody/tr[2]/td/a"));

よりも :

WebElement inputElement = driver.findElement(By.cssSelector(".personalDetailsTable .sendMessegeLink"));

そしてDOM表示属性を操作するよりも(これを読んだ後):

javascriptExecutor js = (JavascriptExecutor) driver;
WebElement w  = (WebElement) js.executeScript("return document.getElementByClassName('sendMessegeLink').removeAttribute('display');");

そして最後に、Thread.sleep(5000)すべてがDOMにロードされていない場合に備えて、要素にアクセスする直前に(driver.manage().timeouts().implicitlyWait(sec, TimeUnit.SECONDS)私が使用することに加えて.

私は得るElement is not currently visible and so may not be interacted with

4

1 に答える 1

2

これを試して

 WebElement tmpElement= driver.findElement(elementLocator); // Try all your combination here
 JavascriptExecutor executor = JavascriptExecutor)driver;
 executor.executeScript(“arguments[0].click();”, tmpElement);
于 2013-08-03T13:46:51.360 に答える