Selenium - 将页面移到前面

时间:2018-06-08 11:21:24

标签: selenium

我正在使用Selenium和phantomJS webdriver执行网页刮擦和更新。在一个阶段,完成一个页面可以调出page_A或page_B。我想要的页面是page_B。如果出现page_A,我可以找到元素:

<li class="menu_item">
  <a class="menu_item_anchor_selected" href="#page_a">Page_A</a>
</li>
<li class="menu_item">
  <a class="menu_item_anchor" href="#page_b">Page_B</a>
</li>

然后我可以将目标从锚点提取到page_B。但是,一旦被驱动程序加载,page_B上的每个元素都将保持不可见。

public class fill_page_B (WebDriver driver, String target) throws Exception
{
    String currentUrl = driver.getCurrentUrl;
    String page_B_Url = currentUrl + target;
    driver.get (page_B_Url);

    // prove that page_B actually loaded
    String page = driver.getPageSource ();
    System.println (page);

    WebElement we = driver.findElement (By.id ("MyId"));

    // ignore test for we exists; it does

    WebDriver wait = new WebDriverWait (driver, 60);      // should be long enough!
    wait.until (ExpectedConditions.visibilityOf (we));    // fails

    . . .
}

我尝试过使用:

driver.manage().window().maximize();

以及其他一些技巧,以确保窗口没有缩小,以便在可视窗口和其他类似的技巧之外进行必要的控制,以确保它没有完全从屏幕上移出。

我也尝试过:

JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript ("arguments[0].checked=true;", we);

强制元素可见。然而,这种方法仅仅引发了一个异常“无法点击选项元素。执行JavaScript点击功能会返回意外错误等。”

然而,当我再次运行我的应用程序时,这次使用Internet Explorer驱动程序时,我注意到当我获得page_B(并通过在系统日志中显示页面内容来证明它)时,page_A仍然可见。在获取page_B之前,我确实尝试调整page_A(之前已经最大化),但这没有任何区别;第_B页上的所有内容都保持不可见且无法点击。

关于Selenium如何解决这个问题的任何建议?

0 个答案:

没有答案