0

操作系统:Windows Selenium 版本:2.53.1.0 IDE:Visual Studio 2013 浏览器:Internet Explorer 11 版本 11.420

当我尝试单击网页上的元素时出现异常。当单击链接并打开一个对话框时会发生这种情况。Webelement.click() 函数单击元素并打开模式对话框,但 Click() 需要时间返回并最终将异常记录为“对远程 WebDriver 服务器的 URL“HTTP 请求在 60 秒后超时。”

预期行为:

它应该单击“Firefox Beta”下载按钮,然后会出现带有运行和保存选项的“IE工具栏”

实际行为:

点击“Firefox Beta”下载按钮,“IE工具栏”就来了。但是 downloadElement.Click() 等待 60 秒并抛出异常

重现步骤:

下面是代码片段:

string url = "https://www.mozilla.org/en-US/firefox/channel/#beta";
try{
   IWebDriver driver = new InternetExplorerDriver();        
   driver.Navigate().GoToUrl(url);    
   Thread.Sleep(5000);    
   IWebElement downloadElement = driver.FindElement(By.XPath("//div[@id='download-button-desktop-beta']/ul/li/a/strong"));    
   Thread.Sleep(5000);    
   downloadElement.Click();   
  }catch{
     //catch block
  }
4

3 回答 3

1

尝试给出这个 xpath 而不是那个。

IWebElement downloadElement = driver.FindElement(By.XPath("/html/body/div[2]/div/main/section[1]/div/div/ul/li[1]/a/strong"));

有时,IE11 selenium 的一些问题无法按预期工作。所以我在某些情况下使用双击而不是单击。

Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.xpath("/html/body/div[2]/div/main/section[1]/div/div/ul/li[1]/a/strong"))).doubleClick().perform();

尝试使用两者,希望它会有所帮助

于 2016-10-13T09:23:29.007 回答
0

您可以在 downloadElement.Click() 之后添加隐式等待并等待模式对话框完全加载。

于 2016-10-13T07:27:38.440 回答
0

试试这个。它对我有用 -

package sbps;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;

public class cvs_signup
{
    public static void main(String[] args) {

        String url = "https://www.mozilla.org/en-US/firefox/channel/#beta";
        try{
           WebDriver driver = new InternetExplorerDriver();
           driver.get(url);
           Thread.sleep(5000);
           WebElement downloadElement = driver.findElement(By.xpath("(//a[@href='https://download.mozilla.org/?product=firefox-beta-stub&os=win&lang=en-US'])[last()]"));
           Thread.sleep(5000);
           downloadElement.click();
          }catch(Exception e){
             //catch block
          }
        }
}
于 2016-10-13T11:21:45.580 回答