Chromedriver浏览器超时返回上一页错误 - Python Selenium

时间:2017-08-24 00:04:09

标签: python selenium selenium-webdriver selenium-chromedriver

基本上,我创建了一个向搜索引擎发送查询的程序。从搜索结果中,它将选择一个随机链接点击。这有效。现在,我已经设置了3秒的超时等待。如果页面加载时间超过3秒,我想使用try / except块并捕获错误/异常,然后返回上一页。

我遇到了一些问题。我已经尝试了多种方法,但在当前的“除了超时异常”之外我仍然遇到第二次超时错误。状态。

以下是我最近尝试的代码:

var checkOptions = function ()
{
  // here check the options that you want to be disabled based on your value sum
  $("select.options option").each(function () {
    // stuff
    // $(this).prop("disabled", true);
  });
};

$("select.options").change(function () {
  $("select.options option[value='" + $(this).data('index') + "']").prop('disabled', false);
  $(this).data('index', this.value);
  $("select.options option[value='" + this.value + "']:not([value=''])").prop('disabled', true);
  $(this).find("option[value='" + this.value + "']:not([value=''])").prop('disabled', false);
  checkOptions();
});

checkOptions();

当尝试使用浏览器执行任何操作时,这会引发第二次超时。对于“返回window.stop'我试过了:

var sum = 0;
var options = [
  {
    id: 1,
    text: "Tip 1",
    value: 10
  },
  {
    id: 2,
    text: "Tip 2",
    value: 20
  },
  {
    id: 3,
    text: "Tip 3",
    value: 30
  },
  {
    id: 4,
    text: "Tip 4",
    value: 40
  },
  {
    id: 5,
    text: "Tip 5",
    value: 50
  }
];
var onSelect = function ()
{
  var id = parseInt(this.value);
  disableOption(id);

  sum += options.find(function(item)
  {
    if (item.id == id)
    {
      return item;
    }
  }).value;

  $(".sum").html(sum);

  // Disable the select
  $(this).attr("disabled", true);

  // Do the move
  createSelect();
};
var disableOption = function (id)
{
  options = options.map(function (item)
  {
    if (item.id == id)
    {
      item.disabled = true;
    }

    return item;
  });
};
var createOptions = function (select)
{
  var newOptions = [];
  for (var i = 0; i < options.length; i++)
  {
    var item = options[i];
    // here you can check what options should be in based on sum
    if ((sum + item.value) <= 100)
    {
     // Add item to available options
      newOptions.push(item);
    }
    // OR disable the item
    // {
    // item.disabled = true
    // newOptions.push(item);
    // }
  }

  for (var i = 0; i < newOptions.length; i++)
  {
    var optionData = newOptions[i];
    var option = $("<option></option>");
    $(option).attr("value", optionData.id);
    $(option).html(optionData.text);

    if (optionData.disabled)
    {
      $(option).attr("disabled", true);
    }

    $(select).append(option);
  }

  return newOptions.length > 0;
};
var createSelect = function ()
{
  var select = $("<select></select>");
  var hasOptions = createOptions(select);
  $(select).change(onSelect);

  // Do not create if there is no options to be displayed
  if (hasOptions)
  {
    $(".options").append(select);
  }
};

createSelect();

// HTML
// <div class="options"></div>

我还尝试了browser = webdriver.Chrome() browser.set_page_load_timeout(30) # Set to 2 seconds to raise timeoutexception browser.get('http://bing.com') time.sleep(2) try: browser.set_page_load_timeout(2) #Set load to 2 sec to raise exception browser.get('http://amazon.com') print('Successfully opened page.') except TimeoutException: print('Timeout Exception occurred.') browser.set_page_load_timeout(30) # Set to normal load timeout time.sleep(1) browser.execute_script('return window.stop') print('Browser loading stopped.') time.sleep(1) browser.execute_script('window.history.go(-1)') print('Browser successfully went back to the previous page.') 方法返回浏览器。我在这里不知所措。有人有解决方法吗?

如果您需要其他信息,请与我们联系。我在这里做了一些示例代码测试,然后转到Bing然后直接到亚马逊。

0 个答案:

没有答案